* $wgCompiledFiles has been removed.
* $wgSortSpecialPages was removed, the listing on Special:SpecialPages is
now always sorted.
+* $wgSpecialPages may now use callback functions as an alternative to plain class names.
+ This allows more control over constructor parameters.
* $wgHTCPMulticastAddress, $wgHTCPMulticastRouting and $wgHTCPPort were removed.
* $wgRC2UDPAddress, $wgRC2UDPInterwikiPrefix, $wgRC2UDPOmitBots, $wgRC2UDPPort
and $wgRC2UDPPrefix have been removed.
* Added HTMLAutoCompleteSelectField.
* Added a new hook, "SkinPreloadExistence", to allow extensions to add titles to
link existence cache before the page is rendered.
+* Config::set() was moved to its own interface, MutableConfig. GlobalVarConfig::set()
+ is now deprecated, does not implement MutableConfig.
+* A MutableConfig named HashConfig was added, that stores an array of configuration
+ settings.
+* (bug 69418) A MultiConfig implementation was added that supports fallback
+ to multiple Config instances.
=== Bug fixes in 1.24 ===
* (bug 50572) MediaWiki:Blockip should support gender
deprecated in favor of cmstarthexsortkey and cmendhexsortkey.
* (bug 63326) Add blockedtimestamp field to output of blockinfo property for
the list=allusers and list=users modules.
+* prop=imageinfo no longer requires iiurlwidth to be set when using iiurlparam.
+* Added prop=linkshere, prop=fileusage, and prop=transcludedin, which are
+ roughly equivalent to list=backlinks, list=imageusage, and list=embeddedin
+ but can work on a list of titles (including titles from a generator).
+* prop=redirects can now filter returned redirects by namespace.
=== Action API internal changes in 1.24 ===
* Methods for handling continuation are added to ApiResult, so actions other
ApiTokensGetTokenTypes are deprecated, but are still called to support
backwards-compatible token access.
* ApiBase::validateLimit and ApiBase::validateTimestamp are now protected.
+* ApiQueryRedirects was removed; prop=redirects is now implemented by
+ ApiQueryBacklinksProp along with the newly-added prop modules.
* The following methods have been deprecated and may be removed in a future
release:
* ApiBase::getResultProperties
meaning that JavaScript is no longer executed in these browser versions.
* Browser support for Opera 11 lowered from Grade A to Grade C.
* Removed IEFixes module which existed purely to provide support for MSIE versions
+* Deprecated SpecialPageFactory::getList() in favor of
+ SpecialPageFactory::getNames()
below 7 (conditionally loaded only for those browsers).
* Action::checkCanExecute() no longer has a return value.
* Removed cleanupForIRC(), loadFromCurRow(), newFromCurRow(), notifyRC2UDP()
and "jquery" modules. In the past, this behavior was undefined, now it will
throw an error.
* Removed BagOStuff::replace(). (deprecated since 1.23)
+* In Linker.php, link(), linkText() and makeBrokenImageLinkObj() now display
+ warnings if their first parameter is not a Title object. Also makeImageLink()
+ now requires a Parser as its first parameter.
==== Renamed classes ====
* CLDRPluralRuleConverter_Expression to CLDRPluralRuleConverterExpression
$rev: Revision object
&$links: Array of HTML links
+'HTMLFileCache::useFileCache': Override whether a page should be cached in file
+cache.
+$context: An IContextSource object with information about the request being served.
+
'ImageBeforeProduceHTML': Called before producing the HTML created by a wiki
image insertion. You can skip the default logic entirely by returning false, or
just modify a few things using call-by-reference.
display: block;
margin: 0;
margin-left: 20px;
+
+ div {
+ margin-bottom: 5px;
+ }
}
}
}
'ApiQueryAllPages' => 'includes/api/ApiQueryAllPages.php',
'ApiQueryAllUsers' => 'includes/api/ApiQueryAllUsers.php',
'ApiQueryBacklinks' => 'includes/api/ApiQueryBacklinks.php',
+ 'ApiQueryBacklinksprop' => 'includes/api/ApiQueryBacklinksprop.php',
'ApiQueryBase' => 'includes/api/ApiQueryBase.php',
'ApiQueryBlocks' => 'includes/api/ApiQueryBlocks.php',
'ApiQueryCategories' => 'includes/api/ApiQueryCategories.php',
'ApiQueryRandom' => 'includes/api/ApiQueryRandom.php',
'ApiQueryRecentChanges' => 'includes/api/ApiQueryRecentChanges.php',
'ApiQueryFileRepoInfo' => 'includes/api/ApiQueryFileRepoInfo.php',
- 'ApiQueryRedirects' => 'includes/api/ApiQueryRedirects.php',
'ApiQueryRevisions' => 'includes/api/ApiQueryRevisions.php',
'ApiQuerySearch' => 'includes/api/ApiQuerySearch.php',
'ApiQuerySiteinfo' => 'includes/api/ApiQuerySiteinfo.php',
'ConfigException' => 'includes/config/ConfigException.php',
'ConfigFactory' => 'includes/config/ConfigFactory.php',
'GlobalVarConfig' => 'includes/config/GlobalVarConfig.php',
+ 'HashConfig' => 'includes/config/HashConfig.php',
+ 'MultiConfig' => 'includes/config/MultiConfig.php',
'MutableConfig' => 'includes/config/MutableConfig.php',
# includes/content
$wgValidSkinNames = array();
/**
- * Special page list.
- * See the top of SpecialPage.php for documentation.
+ * Special page list. This is an associative array mapping the (canonical) names of
+ * special pages to either a class name to be instantiated, or a callback to use for
+ * creating the special page object. In both cases, the result must be an instance of
+ * SpecialPage.
*/
$wgSpecialPages = array();
public static function link(
$target, $html = null, $customAttribs = array(), $query = array(), $options = array()
) {
- wfProfileIn( __METHOD__ );
if ( !$target instanceof Title ) {
- wfProfileOut( __METHOD__ );
+ wfWarn( __METHOD__ . ': Requires $target to be a Title object.' );
return "<!-- ERROR -->$html";
}
+ wfProfileIn( __METHOD__ );
if ( is_string( $query ) ) {
// some functions withing core using this still hand over query strings
* @return string
*/
private static function linkText( $target ) {
- // We might be passed a non-Title by make*LinkObj(). Fail gracefully.
if ( !$target instanceof Title ) {
+ wfWarn( __METHOD__ . ': Requires $target to be a Title object.' );
return '';
}
-
// If the target is just a fragment, with no title, we return the fragment
// text. Otherwise, we return the title text itself.
if ( $target->getPrefixedText() === '' && $target->hasFragment() ) {
* @since 1.20
* @return string HTML for an image, with links, wrappers, etc.
*/
- public static function makeImageLink( /*Parser*/ $parser, Title $title,
+ public static function makeImageLink( Parser $parser, Title $title,
$file, $frameParams = array(), $handlerParams = array(), $time = false,
$query = "", $widthOption = null
) {
# If a thumbnail width has not been provided, it is set
# to the default user option as specified in Language*.php
if ( $fp['align'] == '' ) {
- if ( $parser instanceof Parser ) {
- $fp['align'] = $parser->getTargetLanguage()->alignEnd();
- } else {
- # backwards compatibility, remove with makeImageLink2()
- global $wgContLang;
- $fp['align'] = $wgContLang->alignEnd();
- }
+ $fp['align'] = $parser->getTargetLanguage()->alignEnd();
}
return $prefix . self::makeThumbLink2( $title, $file, $fp, $hp, $time, $query ) . $postfix;
}
public static function makeBrokenImageLinkObj( $title, $label = '',
$query = '', $unused1 = '', $unused2 = '', $time = false
) {
- global $wgEnableUploads, $wgUploadMissingFileUrl, $wgUploadNavigationUrl;
if ( !$title instanceof Title ) {
+ wfWarn( __METHOD__ . ': Requires $title to be a Title object.' );
return "<!-- ERROR -->" . htmlspecialchars( $label );
}
+
+ global $wgEnableUploads, $wgUploadMissingFileUrl, $wgUploadNavigationUrl;
wfProfileIn( __METHOD__ );
if ( $label == '' ) {
$label = $title->getPrefixedText();
wfProfileIn( 'main-try-filecache' );
if ( HTMLFileCache::useFileCache( $this->context ) ) {
// Try low-level file cache hit
- $cache = HTMLFileCache::newFromTitle( $title, $action );
+ $cache = new HTMLFileCache( $title, $action );
if ( $cache->isCacheGood( /* Assume up to date */ ) ) {
// Check incoming headers to see if client has this cached
$timestamp = $cache->cacheTimestamp();
// Unlike SpecialPage itself, we want the canonical forms of both
// canonical and alias title forms...
$keys = array();
- foreach ( SpecialPageFactory::getList() as $page => $class ) {
+ foreach ( SpecialPageFactory::getNames() as $page ) {
$keys[$wgContLang->caseFold( $page )] = $page;
}
foreach ( $wgContLang->getSpecialPageAliases() as $page => $aliases ) {
- if ( !array_key_exists( $page, SpecialPageFactory::getList() ) ) {# bug 20885
+ if ( !in_array( $page, SpecialPageFactory::getNames() ) ) {# bug 20885
continue;
}
# Fill in the file cache if not set already
$useFileCache = $config->get( 'UseFileCache' );
if ( $useFileCache && HTMLFileCache::useFileCache( $this->getContext() ) ) {
- $cache = HTMLFileCache::newFromTitle( $this->getTitle(), 'history' );
+ $cache = new HTMLFileCache( $this->getTitle(), 'history' );
if ( !$cache->isCacheGood( /* Assume up to date */ ) ) {
ob_start( array( &$cache, 'saveToFileCache' ) );
}
$this->dieUsageMsg( array( 'missingparam', 'token' ) );
}
- if ( array_key_exists(
- $module->encodeParamName( 'token' ),
- $this->getRequest()->getQueryValues()
- ) ) {
+ if ( !$this->getConfig()->get( 'DebugAPI' ) &&
+ array_key_exists(
+ $module->encodeParamName( 'token' ),
+ $this->getRequest()->getQueryValues()
+ )
+ ) {
$this->dieUsage(
"The '{$module->encodeParamName( 'token' )}' parameter was found in the query string, but must be in the POST body",
'mustposttoken'
'contributors' => 'ApiQueryContributors',
'duplicatefiles' => 'ApiQueryDuplicateFiles',
'extlinks' => 'ApiQueryExternalLinks',
+ 'fileusage' => 'ApiQueryBacklinksprop',
'images' => 'ApiQueryImages',
'imageinfo' => 'ApiQueryImageInfo',
'info' => 'ApiQueryInfo',
'links' => 'ApiQueryLinks',
+ 'linkshere' => 'ApiQueryBacklinksprop',
'iwlinks' => 'ApiQueryIWLinks',
'langlinks' => 'ApiQueryLangLinks',
'pageprops' => 'ApiQueryPageProps',
- 'redirects' => 'ApiQueryRedirects',
+ 'redirects' => 'ApiQueryBacklinksprop',
'revisions' => 'ApiQueryRevisions',
'stashimageinfo' => 'ApiQueryStashImageInfo',
'templates' => 'ApiQueryLinks',
+ 'transcludedin' => 'ApiQueryBacklinksprop',
);
/**
--- /dev/null
+<?php
+/**
+ * API module to handle links table back-queries
+ *
+ * Created on Aug 19, 2014
+ *
+ * Copyright © 2014 Brad Jorsch <bjorsch@wikimedia.org>
+ *
+ * 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
+ *
+ * @file
+ * @since 1.24
+ */
+
+/**
+ * This implements prop=redirects, prop=linkshere, prop=catmembers,
+ * prop=transcludedin, and prop=fileusage
+ *
+ * @ingroup API
+ * @since 1.24
+ */
+class ApiQueryBacklinksprop extends ApiQueryGeneratorBase {
+
+ // Data for the various modules implemented by this class
+ private static $settings = array(
+ 'redirects' => array(
+ 'code' => 'rd',
+ 'prefix' => 'rd',
+ 'linktable' => 'redirect',
+ 'what' => 'redirects to',
+ 'description' => 'Returns all redirects to the given pages.',
+ 'props' => array(
+ 'fragment' => 'Fragment of each redirect, if any',
+ ),
+ 'showredirects' => false,
+ 'show' => array(
+ 'fragment' => 'Only show redirects with a fragment',
+ '!fragment' => 'Only show redirects without a fragment',
+ ),
+ ),
+ 'linkshere' => array(
+ 'code' => 'lh',
+ 'prefix' => 'pl',
+ 'linktable' => 'pagelinks',
+ 'from_namespace' => true,
+ 'what' => 'pages linking to',
+ 'description' => 'Find all pages that link to the given pages.',
+ 'showredirects' => true,
+ ),
+ 'transcludedin' => array(
+ 'code' => 'ti',
+ 'prefix' => 'tl',
+ 'linktable' => 'templatelinks',
+ 'from_namespace' => true,
+ 'what' => 'pages transcluding',
+ 'description' => 'Find all pages that transclude the given pages.',
+ 'showredirects' => true,
+ ),
+ 'fileusage' => array(
+ 'code' => 'fu',
+ 'prefix' => 'il',
+ 'linktable' => 'imagelinks',
+ 'from_namespace' => true,
+ 'to_namespace' => NS_FILE,
+ 'what' => 'pages using',
+ 'exampletitle' => 'File:Example.jpg',
+ 'description' => 'Find all pages that use the given files.',
+ 'showredirects' => true,
+ ),
+ );
+
+ public function __construct( ApiQuery $query, $moduleName ) {
+ parent::__construct( $query, $moduleName, self::$settings[$moduleName]['code'] );
+ }
+
+ public function execute() {
+ $this->run();
+ }
+
+ public function executeGenerator( $resultPageSet ) {
+ $this->run( $resultPageSet );
+ }
+
+ /**
+ * @param ApiPageSet $resultPageSet
+ */
+ private function run( ApiPageSet $resultPageSet = null ) {
+ $settings = self::$settings[$this->getModuleName()];
+
+ $db = $this->getDB();
+ $params = $this->extractRequestParams();
+ $prop = array_flip( $params['prop'] );
+ $emptyString = $db->addQuotes( '' );
+
+ $pageSet = $this->getPageSet();
+ $titles = $pageSet->getGoodTitles() + $pageSet->getMissingTitles();
+ $map = $pageSet->getAllTitlesByNamespace();
+
+ // Determine our fields to query on
+ $p = $settings['prefix'];
+ $hasNS = !isset( $settings['to_namespace'] );
+ if ( $hasNS ) {
+ $bl_namespace = "{$p}_namespace";
+ $bl_title = "{$p}_title";
+ } else {
+ $bl_namespace = $settings['to_namespace'];
+ $bl_title = "{$p}_to";
+
+ $titles = array_filter( $titles, function ( $t ) use ( $bl_namespace ) {
+ return $t->getNamespace() === $bl_namespace;
+ } );
+ $map = array_intersect_key( $map, array( $bl_namespace => true ) );
+ }
+ $bl_from = "{$p}_from";
+
+ if ( !$titles ) {
+ return; // nothing to do
+ }
+
+ // Figure out what we're sorting by, and add associated WHERE clauses.
+ // MySQL's query planner screws up if we include a field in ORDER BY
+ // when it's constant in WHERE, so we have to test that for each field.
+ $sortby = array();
+ if ( $hasNS && count( $map ) > 1 ) {
+ $sortby[$bl_namespace] = 'ns';
+ }
+ $theTitle = null;
+ foreach ( $map as $nsTitles ) {
+ reset( $nsTitles );
+ $key = key( $nsTitles );
+ if ( $theTitle === null ) {
+ $theTitle = $key;
+ }
+ if ( count( $nsTitles ) > 1 || $key !== $theTitle ) {
+ $sortby[$bl_title] = 'title';
+ break;
+ }
+ }
+ $miser_ns = null;
+ if ( $params['namespace'] !== null ) {
+ if ( empty( $settings['from_namespace'] ) && $this->getConfig()->get( 'MiserMode' ) ) {
+ $miser_ns = $params['namespace'];
+ } else {
+ $this->addWhereFld( "{$p}_from_namespace", $params['namespace'] );
+ if ( !empty( $settings['from_namespace'] ) && count( $params['namespace'] ) > 1 ) {
+ $sortby["{$p}_from_namespace"] = 'int';
+ }
+ }
+ }
+ $sortby[$bl_from] = 'int';
+
+ // Now use the $sortby to figure out the continuation
+ if ( !is_null( $params['continue'] ) ) {
+ $cont = explode( '|', $params['continue'] );
+ $this->dieContinueUsageIf( count( $cont ) != count( $sortby ) );
+ $where = '';
+ $i = count( $sortby ) - 1;
+ $cont_ns = 0;
+ $cont_title = '';
+ foreach ( array_reverse( $sortby, true ) as $field => $type ) {
+ $v = $cont[$i];
+ switch ( $type ) {
+ case 'ns':
+ $cont_ns = (int)$v;
+ /* fall through */
+ case 'int':
+ $v = (int)$v;
+ $this->dieContinueUsageIf( $v != $cont[$i] );
+ break;
+
+ case 'title':
+ $cont_title = $v;
+ /* fall through */
+ default:
+ $v = $db->addQuotes( $v );
+ break;
+ }
+
+ if ( $where === '' ) {
+ $where = "$field >= $v";
+ } else {
+ $where = "$field > $v OR ($field = $v AND ($where))";
+ }
+
+ $i--;
+ }
+ $this->addWhere( $where );
+ }
+
+ // Populate the rest of the query
+ $this->addTables( array( $settings['linktable'], 'page' ) );
+ $this->addWhere( "$bl_from = page_id" );
+
+ if ( $this->getModuleName() === 'redirects' ) {
+ $this->addWhere( "rd_interwiki = $emptyString OR rd_interwiki IS NULL" );
+ }
+
+ $this->addFields( array_keys( $sortby ) );
+ $this->addFields( array( 'bl_namespace' => $bl_namespace, 'bl_title' => $bl_title ) );
+ if ( is_null( $resultPageSet ) ) {
+ $fld_pageid = isset( $prop['pageid'] );
+ $fld_title = isset( $prop['title'] );
+ $fld_redirect = isset( $prop['redirect'] );
+
+ $this->addFieldsIf( 'page_id', $fld_pageid );
+ $this->addFieldsIf( array( 'page_title', 'page_namespace' ), $fld_title );
+ $this->addFieldsIf( 'page_is_redirect', $fld_redirect );
+
+ // prop=redirects
+ $fld_fragment = isset( $prop['fragment'] );
+ $this->addFieldsIf( 'rd_fragment', $fld_fragment );
+ } else {
+ $this->addFields( $resultPageSet->getPageTableFields() );
+ }
+
+ $this->addFieldsIf( 'page_namespace', $miser_ns !== null );
+
+ if ( $hasNS ) {
+ $lb = new LinkBatch( $titles );
+ $this->addWhere( $lb->constructSet( $p, $db ) );
+ } else {
+ $where = array();
+ foreach ( $titles as $t ) {
+ if ( $t->getNamespace() == $bl_namespace ) {
+ $where[] = "$bl_title = " . $db->addQuotes( $t->getDBkey() );
+ }
+ }
+ $this->addWhere( $db->makeList( $where, LIST_OR ) );
+ }
+
+ if ( $params['show'] !== null ) {
+ // prop=redirects only
+ $show = array_flip( $params['show'] );
+ if ( isset( $show['fragment'] ) && isset( $show['!fragment'] ) ||
+ isset( $show['redirect'] ) && isset( $show['!redirect'] )
+ ) {
+ $this->dieUsageMsg( 'show' );
+ }
+ $this->addWhereIf( "rd_fragment != $emptyString", isset( $show['fragment'] ) );
+ $this->addWhereIf(
+ "rd_fragment = $emptyString OR rd_fragment IS NULL",
+ isset( $show['!fragment'] )
+ );
+ $this->addWhereIf( array( 'page_is_redirect' => 1 ), isset( $show['redirect'] ) );
+ $this->addWhereIf( array( 'page_is_redirect' => 0 ), isset( $show['!redirect'] ) );
+ }
+
+ // Override any ORDER BY from above with what we calculated earlier.
+ $this->addOption( 'ORDER BY', array_keys( $sortby ) );
+
+ $this->addOption( 'LIMIT', $params['limit'] + 1 );
+
+ $res = $this->select( __METHOD__ );
+
+ if ( is_null( $resultPageSet ) ) {
+ $count = 0;
+ foreach ( $res as $row ) {
+ if ( ++$count > $params['limit'] ) {
+ // We've reached the one extra which shows that
+ // there are additional pages to be had. Stop here...
+ $this->setContinue( $row, $sortby );
+ break;
+ }
+
+ if ( $miser_ns !== null && !in_array( $row->page_namespace, $miser_ns ) ) {
+ // Miser mode namespace check
+ continue;
+ }
+
+ // Get the ID of the current page
+ $id = $map[$row->bl_namespace][$row->bl_title];
+
+ $vals = array();
+ if ( $fld_pageid ) {
+ $vals['pageid'] = $row->page_id;
+ }
+ if ( $fld_title ) {
+ ApiQueryBase::addTitleInfo( $vals,
+ Title::makeTitle( $row->page_namespace, $row->page_title )
+ );
+ }
+ if ( $fld_fragment && $row->rd_fragment !== null && $row->rd_fragment !== '' ) {
+ $vals['fragment'] = $row->rd_fragment;
+ }
+ if ( $fld_redirect && $row->page_is_redirect ) {
+ $vals['redirect'] = '';
+ }
+ $fit = $this->addPageSubItem( $id, $vals );
+ if ( !$fit ) {
+ $this->setContinue( $row, $sortby );
+ break;
+ }
+ }
+ } else {
+ $titles = array();
+ $count = 0;
+ foreach ( $res as $row ) {
+ if ( ++$count > $params['limit'] ) {
+ // We've reached the one extra which shows that
+ // there are additional pages to be had. Stop here...
+ $this->setContinue( $row, $sortby );
+ break;
+ }
+ $titles[] = Title::makeTitle( $row->page_namespace, $row->page_title );
+ }
+ $resultPageSet->populateFromTitles( $titles );
+ }
+ }
+
+ private function setContinue( $row, $sortby ) {
+ $cont = array();
+ foreach ( $sortby as $field => $v ) {
+ $cont[] = $row->$field;
+ }
+ $this->setContinueEnumParameter( 'continue', join( '|', $cont ) );
+ }
+
+ public function getCacheMode( $params ) {
+ return 'public';
+ }
+
+ public function getAllowedParams() {
+ $settings = self::$settings[$this->getModuleName()];
+
+ $ret = array(
+ 'prop' => array(
+ ApiBase::PARAM_TYPE => array(
+ 'pageid',
+ 'title',
+ ),
+ ApiBase::PARAM_ISMULTI => true,
+ ApiBase::PARAM_DFLT => 'pageid|title',
+ ),
+ 'namespace' => array(
+ ApiBase::PARAM_ISMULTI => true,
+ ApiBase::PARAM_TYPE => 'namespace',
+ ),
+ 'limit' => array(
+ ApiBase::PARAM_DFLT => 10,
+ ApiBase::PARAM_TYPE => 'limit',
+ ApiBase::PARAM_MIN => 1,
+ ApiBase::PARAM_MAX => ApiBase::LIMIT_BIG1,
+ ApiBase::PARAM_MAX2 => ApiBase::LIMIT_BIG2
+ ),
+ 'continue' => null,
+ );
+
+ if ( !empty( $settings['showredirects'] ) ) {
+ $ret['prop'][ApiBase::PARAM_TYPE][] = 'redirect';
+ $ret['prop'][ApiBase::PARAM_DFLT] .= '|redirect';
+ }
+ if ( isset( $settings['props'] ) ) {
+ $ret['prop'][ApiBase::PARAM_TYPE] = array_merge(
+ $ret['prop'][ApiBase::PARAM_TYPE], array_keys( $settings['props'] )
+ );
+ }
+
+ $show = array();
+ if ( !empty( $settings['showredirects'] ) ) {
+ $show[] = 'redirect';
+ $show[] = '!redirect';
+ }
+ if ( isset( $settings['show'] ) ) {
+ $show = array_merge( $show, array_keys( $settings['show'] ) );
+ }
+ if ( $show ) {
+ $ret['show'] = array(
+ ApiBase::PARAM_TYPE => $show,
+ ApiBase::PARAM_ISMULTI => true,
+ );
+ }
+
+ return $ret;
+ }
+
+ public function getParamDescription() {
+ $settings = self::$settings[$this->getModuleName()];
+ $p = $this->getModulePrefix();
+
+ $ret = array(
+ 'prop' => array(
+ 'Which properties to get:',
+ ),
+ 'show' => array(
+ 'Show only items that meet this criteria.',
+ ),
+ 'namespace' => 'Only include pages in these namespaces',
+ 'limit' => 'How many to return',
+ 'continue' => 'When more results are available, use this to continue',
+ );
+
+ if ( empty( $settings['from_namespace'] ) && $this->getConfig()->get( 'MiserMode' ) ) {
+ $ret['namespace'] = array(
+ $ret['namespace'],
+ "NOTE: Due to \$wgMiserMode, using this may result in fewer than \"{$p}limit\" results",
+ 'returned before continuing; in extreme cases, zero results may be returned.',
+ );
+ if ( isset( $ret['type'] ) ) {
+ $ret['namespace'][] = "Note that you can use {$p}type=subcat or {$p}type=file " .
+ "instead of {$p}namespace=14 or 6.";
+ }
+ }
+
+ $props = array(
+ 'pageid' => 'Adds the ID of page',
+ 'title' => 'Adds the title and namespace ID of the page',
+ );
+ if ( !empty( $settings['showredirects'] ) ) {
+ $props['redirect'] = 'Indicate if the page is a redirect';
+ }
+ if ( isset( $settings['props'] ) ) {
+ $props += $settings['props'];
+ }
+ foreach ( $props as $k => $v ) {
+ $ret['props'][] = sprintf( "%-9s - %s", $k, $v );
+ }
+
+ $show = array();
+ if ( !empty( $settings['showredirects'] ) ) {
+ $show += array(
+ 'redirect' => 'Only show redirects',
+ '!redirect' => 'Only show non-redirects',
+ );
+ }
+ if ( isset( $settings['show'] ) ) {
+ $show += $settings['show'];
+ }
+ foreach ( $show as $k => $v ) {
+ $ret['show'][] = sprintf( "%-9s - %s", $k, $v );
+ }
+
+ return $ret;
+ }
+
+ public function getDescription() {
+ return self::$settings[$this->getModuleName()]['description'];
+ }
+
+ public function getExamples() {
+ $settings = self::$settings[$this->getModuleName()];
+ $name = $this->getModuleName();
+ $what = $settings['what'];
+ $title = isset( $settings['exampletitle'] ) ? $settings['exampletitle'] : 'Main Page';
+ $etitle = rawurlencode( $title );
+
+ return array(
+ "api.php?action=query&prop={$name}&titles={$etitle}"
+ => "Get a list of $what [[$title]]",
+ "api.php?action=query&generator={$name}&titles={$etitle}&prop=info"
+ => "Get information about $what [[$title]]",
+ );
+ }
+
+ public function getHelpUrls() {
+ $name = $this->getModuleName();
+ $prefix = $this->getModulePrefix();
+ return "https://www.mediawiki.org/wiki/API:Properties#{$name}_.2F_{$prefix}";
+ }
+}
$scale = array();
$scale['height'] = $params['urlheight'];
} else {
- $scale = null;
if ( $params['urlparam'] ) {
- $this->dieUsage( "{$p}urlparam requires {$p}urlwidth", "urlparam_no_width" );
+ // Audio files might not have a width/height.
+ $scale = array();
+ } else {
+ $scale = null;
}
}
* @return array Array of parameters for transform.
*/
protected function mergeThumbParams( $image, $thumbParams, $otherParams ) {
+ if ( $thumbParams === null ) {
+ // No scaling requested
+ return null;
+ }
if ( !isset( $thumbParams['width'] ) && isset( $thumbParams['height'] ) ) {
// We want to limit only by height in this situation, so pass the
// image's full width as the limiting width. But some file types
}
if ( !$otherParams ) {
+ $this->checkParameterNormalise( $image, $thumbParams );
return $thumbParams;
}
$p = $this->getModulePrefix();
// handlers.
$this->setWarning( "Could not parse {$p}urlparam for " . $image->getName()
. '. Using only width and height' );
-
+ $this->checkParameterNormalise( $image, $thumbParams );
return $thumbParams;
}
- if ( isset( $paramList['width'] ) ) {
+ if ( isset( $paramList['width'] ) && isset( $thumbParams['width'] ) ) {
if ( intval( $paramList['width'] ) != intval( $thumbParams['width'] ) ) {
$this->setWarning( "Ignoring width value set in {$p}urlparam ({$paramList['width']}) "
. "in favor of width value derived from {$p}urlwidth/{$p}urlheight "
}
}
- return $thumbParams + $paramList;
+ $finalParams = $thumbParams + $paramList;
+ $this->checkParameterNormalise( $image, $finalParams );
+ return $finalParams;
+ }
+
+ /**
+ * Verify that the final image parameters can be normalised.
+ *
+ * This doesn't use the normalised parameters, since $file->transform
+ * expects the pre-normalised parameters, but doing the normalisation
+ * allows us to catch certain error conditions early (such as missing
+ * required parameter).
+ *
+ * @param $image File
+ * @param $finalParams array List of parameters to transform image with
+ */
+ protected function checkParameterNormalise( $image, $finalParams ) {
+ $h = $image->getHandler();
+ if ( !$h ) {
+ return;
+ }
+ // Note: normaliseParams modifies the array in place, but we aren't interested
+ // in the actual normalised version, only if we can actually normalise them,
+ // so we use the functions scope to throw away the normalisations.
+ if ( !$h->normaliseParams( $image, $finalParams ) ) {
+ $this->dieUsage( "Could not normalise image parameters for " . $image->getName(), "urlparamnormal" );
+ }
}
/**
if ( $pageCount !== false ) {
$vals['pagecount'] = $pageCount;
}
+
+ // length as in how many seconds long a video is.
+ $length = $file->getLength();
+ if ( $length ) {
+ // Call it duration, because "length" can be ambiguous.
+ $vals['duration'] = (float)$length;
+ }
}
$pcomment = isset( $prop['parsedcomment'] );
'parsedcomment' => ' parsedcomment - Parse the comment on the version',
'canonicaltitle' => ' canonicaltitle - Adds the canonical title of the image file',
'url' => ' url - Gives URL to the image and the description page',
- 'size' => ' size - Adds the size of the image in bytes ' .
- 'and the height, width and page count (if applicable)',
+ 'size' => ' size - Adds the size of the image in bytes, ' .
+ 'its height and its width. Page count and duration are added if applicable',
'dimensions' => ' dimensions - Alias for size', // B/C with Allimages
'sha1' => ' sha1 - Adds SHA-1 hash for the image',
'mime' => ' mime - Adds MIME type of the image',
'no more than ' . self::TRANSFORM_LIMIT . ' scaled images will be returned.'
),
'urlheight' => "Similar to {$p}urlwidth.",
- 'urlparam' => array( "A handler specific parameter string. For example, pdf's ",
- "might use 'page15-100px'. {$p}urlwidth must be used and be consistent with {$p}urlparam" ),
+ 'urlparam' => array(
+ "A handler specific parameter string. For example, pdf's ",
+ "might use 'page15-100px'."
+ ),
'limit' => 'How many image revisions to return per image',
'start' => 'Timestamp to start listing from',
'end' => 'Timestamp to stop listing at',
+++ /dev/null
-<?php
-/**
- * API module to return redirects to a page
- *
- * Created on Dec 30, 2013
- *
- * Copyright © 2013 Brad Jorsch <bjorsch@wikimedia.org>
- *
- * 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
- *
- * @file
- * @since 1.23
- */
-
-/**
- * This query lists redirects to the given pages.
- *
- * @ingroup API
- */
-class ApiQueryRedirects extends ApiQueryGeneratorBase {
-
- public function __construct( ApiQuery $query, $moduleName ) {
- parent::__construct( $query, $moduleName, 'rd' );
- }
-
- public function execute() {
- $this->run();
- }
-
- public function executeGenerator( $resultPageSet ) {
- $this->run( $resultPageSet );
- }
-
- /**
- * @param ApiPageSet $resultPageSet
- */
- private function run( ApiPageSet $resultPageSet = null ) {
- $db = $this->getDB();
- $params = $this->extractRequestParams();
- $emptyString = $db->addQuotes( '' );
-
- $pageSet = $this->getPageSet();
- $titles = $pageSet->getGoodTitles() + $pageSet->getMissingTitles();
-
- if ( !is_null( $params['continue'] ) ) {
- $cont = explode( '|', $params['continue'] );
- $this->dieContinueUsageIf( count( $cont ) != 3 );
- $rd_namespace = (int)$cont[0];
- $this->dieContinueUsageIf( $rd_namespace != $cont[0] );
- $rd_title = $db->addQuotes( $cont[1] );
- $rd_from = (int)$cont[2];
- $this->dieContinueUsageIf( $rd_from != $cont[2] );
- $this->addWhere(
- "rd_namespace > $rd_namespace OR " .
- "(rd_namespace = $rd_namespace AND " .
- "(rd_title > $rd_title OR " .
- "(rd_title = $rd_title AND " .
- "rd_from >= $rd_from)))"
- );
-
- // Remove titles that we're past already
- $titles = array_filter( $titles, function ( $t ) use ( $rd_namespace, $rd_title ) {
- $ns = $t->getNamespace();
- return ( $ns > $rd_namespace ||
- $ns == $rd_namespace && $t->getDBKey() >= $rd_title
- );
- } );
- }
-
- if ( !$titles ) {
- return; // nothing to do
- }
-
- $this->addTables( array( 'redirect', 'page' ) );
- $this->addFields( array(
- 'rd_from',
- 'rd_namespace',
- 'rd_title',
- ) );
-
- if ( is_null( $resultPageSet ) ) {
- $prop = array_flip( $params['prop'] );
- $fld_pageid = isset( $prop['pageid'] );
- $fld_title = isset( $prop['title'] );
- $fld_fragment = isset( $prop['fragment'] );
-
- $this->addFieldsIf( 'rd_fragment', $fld_fragment );
- $this->addFieldsIf( array( 'page_namespace', 'page_title' ), $fld_title );
- } else {
- $this->addFields( array( 'page_namespace', 'page_title' ) );
- }
-
- $lb = new LinkBatch( $titles );
- $this->addWhere( array(
- 'rd_from = page_id',
- "rd_interwiki = $emptyString OR rd_interwiki IS NULL",
- $lb->constructSet( 'rd', $db ),
- ) );
-
- if ( $params['show'] !== null ) {
- $show = array_flip( $params['show'] );
- if ( isset( $show['fragment'] ) && isset( $show['!fragment'] ) ) {
- $this->dieUsageMsg( 'show' );
- }
- $this->addWhereIf( "rd_fragment != $emptyString", isset( $show['fragment'] ) );
- $this->addWhereIf(
- "rd_fragment = $emptyString OR rd_fragment IS NULL",
- isset( $show['!fragment'] )
- );
- }
-
- $map = $pageSet->getAllTitlesByNamespace();
-
- // Why, MySQL? Why do you do this to us?
- $sortby = array();
- if ( count( $map ) > 1 ) {
- $sortby[] = 'rd_namespace';
- }
- $theTitle = null;
- foreach ( $map as $nsTitles ) {
- reset( $nsTitles );
- $key = key( $nsTitles );
- if ( $theTitle === null ) {
- $theTitle = $key;
- }
- if ( count( $nsTitles ) > 1 || $key !== $theTitle ) {
- $sortby[] = 'rd_title';
- break;
- }
- }
- $sortby[] = 'rd_from';
- $this->addOption( 'ORDER BY', $sortby );
-
- $this->addOption( 'LIMIT', $params['limit'] + 1 );
-
- $res = $this->select( __METHOD__ );
-
- if ( is_null( $resultPageSet ) ) {
- $count = 0;
- foreach ( $res as $row ) {
- if ( ++$count > $params['limit'] ) {
- // We've reached the one extra which shows that
- // there are additional pages to be had. Stop here...
- $this->setContinueEnumParameter( 'continue',
- "$row->rd_namespace|$row->rd_title|$row->rd_from"
- );
- break;
- }
-
- # Get the ID of the current page
- $id = $map[$row->rd_namespace][$row->rd_title];
-
- $vals = array();
- if ( $fld_pageid ) {
- $vals['pageid'] = $row->rd_from;
- }
- if ( $fld_title ) {
- ApiQueryBase::addTitleInfo( $vals,
- Title::makeTitle( $row->page_namespace, $row->page_title )
- );
- }
- if ( $fld_fragment && $row->rd_fragment !== null && $row->rd_fragment !== '' ) {
- $vals['fragment'] = $row->rd_fragment;
- }
- $fit = $this->addPageSubItem( $id, $vals );
- if ( !$fit ) {
- $this->setContinueEnumParameter( 'continue',
- "$row->rd_namespace|$row->rd_title|$row->rd_from"
- );
- break;
- }
- }
- } else {
- $titles = array();
- $count = 0;
- foreach ( $res as $row ) {
- if ( ++$count > $params['limit'] ) {
- // We've reached the one extra which shows that
- // there are additional pages to be had. Stop here...
- $this->setContinueEnumParameter( 'continue',
- "$row->rd_namespace|$row->rd_title|$row->rd_from"
- );
- break;
- }
- $titles[] = Title::makeTitle( $row->page_namespace, $row->page_title );
- }
- $resultPageSet->populateFromTitles( $titles );
- }
- }
-
- public function getCacheMode( $params ) {
- return 'public';
- }
-
- public function getAllowedParams() {
- return array(
- 'prop' => array(
- ApiBase::PARAM_TYPE => array(
- 'pageid',
- 'title',
- 'fragment',
- ),
- ApiBase::PARAM_ISMULTI => true,
- ApiBase::PARAM_DFLT => 'pageid|title',
- ),
- 'show' => array(
- ApiBase::PARAM_TYPE => array(
- 'fragment', '!fragment',
- ),
- ApiBase::PARAM_ISMULTI => true,
- ),
- 'limit' => array(
- ApiBase::PARAM_DFLT => 10,
- ApiBase::PARAM_TYPE => 'limit',
- ApiBase::PARAM_MIN => 1,
- ApiBase::PARAM_MAX => ApiBase::LIMIT_BIG1,
- ApiBase::PARAM_MAX2 => ApiBase::LIMIT_BIG2
- ),
- 'continue' => null,
- );
- }
-
- public function getParamDescription() {
- return array(
- 'prop' => array(
- 'Which properties to get:',
- ' pageid - Page id of each redirect',
- ' title - Title of each redirect',
- ' fragment - Fragment of each redirect, if any',
- ),
- 'show' => array(
- 'Show only items that meet this criteria.',
- ' fragment - Only show redirects with a fragment',
- ' !fragment - Only show redirects without a fragment',
- ),
- 'limit' => 'How many redirects to return',
- 'continue' => 'When more results are available, use this to continue',
- );
- }
-
- public function getDescription() {
- return 'Returns all redirects to the given page(s).';
- }
-
- public function getExamples() {
- return array(
- 'api.php?action=query&prop=redirects&titles=Main%20Page'
- => 'Get a list of redirects to the [[Main Page]]',
- 'api.php?action=query&generator=redirects&titles=Main%20Page&prop=info'
- => 'Get information about all redirects to the [[Main Page]]',
- );
- }
-
- public function getHelpUrls() {
- return 'https://www.mediawiki.org/wiki/API:Properties#redirects_.2F_rd';
- }
-}
global $wgContLang;
$data = array();
$aliases = $wgContLang->getSpecialPageAliases();
- foreach ( SpecialPageFactory::getList() as $specialpage => $stuff ) {
+ foreach ( SpecialPageFactory::getNames() as $specialpage ) {
if ( isset( $aliases[$specialpage] ) ) {
$arr = array( 'realname' => $specialpage, 'aliases' => $aliases[$specialpage] );
$this->getResult()->setIndexedTagName( $arr['aliases'], 'alias' );
* @param string $action
* @throws MWException
* @return HTMLFileCache
+ *
+ * @deprecated Since 1.24, instantiate this class directly
*/
public static function newFromTitle( $title, $action ) {
- $cache = new self();
+ return new self( $title, $action );
+ }
+ /**
+ * @param Title|string $title Title object or prefixed DB key string
+ * @param string $action
+ * @throws MWException
+ */
+ public function __construct( $title, $action ) {
$allowedTypes = self::cacheablePageActions();
if ( !in_array( $action, $allowedTypes ) ) {
- throw new MWException( "Invalid filecache type given." );
+ throw new MWException( 'Invalid file cache type given.' );
}
- $cache->mKey = ( $title instanceof Title )
+ $this->mKey = ( $title instanceof Title )
? $title->getPrefixedDBkey()
: (string)$title;
- $cache->mType = (string)$action;
- $cache->mExt = 'html';
-
- return $cache;
+ $this->mType = (string)$action;
+ $this->mExt = 'html';
}
/**
$clang = $wgContLang->getCode();
// Check that there are no other sources of variation
- return !$user->getId() && !$user->getNewtalk() && $ulang == $clang;
+ if ( $user->getId() || $user->getNewtalk() || $ulang != $clang ) {
+ return false;
+ }
+ // Allow extensions to disable caching
+ return wfRunHooks( 'HTMLFileCache::useFileCache', array( $context ) );
}
/**
}
foreach ( self::cacheablePageActions() as $type ) {
- $fc = self::newFromTitle( $title, $type );
+ $fc = new self( $title, $type );
$fc->clearCache();
}
* @throws ConfigException
*/
public function get( $name );
+
+ /**
+ * Check whether a configuration option is set for the given name
+ *
+ * @param string $name Name of configuration option
+ * @return bool
+ * @since 1.24
+ */
+ public function has( $name );
}
* @see Config::get
*/
public function get( $name ) {
+ if ( !$this->has( $name ) ) {
+ throw new ConfigException( __METHOD__ . ": undefined option: '$name'" );
+ }
return $this->getWithPrefix( $this->prefix, $name );
}
+ /**
+ * @see Config::has
+ */
+ public function has( $name ) {
+ return $this->hasWithPrefix( $this->prefix, $name );
+ }
+
/**
* @see MutableConfig::set
* @deprecated since 1.24
*
* @param string $prefix Prefix to use on the variable, if one.
* @param string $name Variable name without prefix
- * @throws ConfigException
* @return mixed
*/
protected function getWithPrefix( $prefix, $name ) {
+ return $GLOBALS[$prefix . $name];
+ }
+
+ /**
+ * Check if a variable with a given prefix is set
+ *
+ * @param string $prefix Prefix to use on the variable
+ * @param string $name Variable name without prefix
+ * @return bool
+ */
+ protected function hasWithPrefix( $prefix, $name ) {
$var = $prefix . $name;
- if ( !array_key_exists( $var, $GLOBALS ) ) {
- throw new ConfigException( __METHOD__ . ": undefined variable: '$var'" );
- }
- return $GLOBALS[$var];
+ return array_key_exists( $var, $GLOBALS );
}
/**
--- /dev/null
+<?php
+/**
+ * Copyright 2014
+ *
+ * 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
+ *
+ * @file
+ */
+
+/**
+ * A Config instance which stores all settings as a member variable
+ *
+ * @since 1.24
+ */
+class HashConfig implements Config, MutableConfig {
+
+ /**
+ * Array of config settings
+ *
+ * @var array
+ */
+ private $settings;
+
+ /**
+ * @return HashConfig
+ */
+ public static function newInstance() {
+ return new HashConfig;
+ }
+
+ /**
+ * @param array $settings Any current settings to pre-load
+ */
+ public function __construct( array $settings = array() ) {
+ $this->settings = $settings;
+ }
+
+ /**
+ * @see Config::get
+ */
+ public function get( $name ) {
+ if ( !$this->has( $name ) ) {
+ throw new ConfigException( __METHOD__ . ": undefined option: '$name'" );
+ }
+
+ return $this->settings[$name];
+ }
+
+ /**
+ * @see Config::has
+ */
+ public function has( $name ) {
+ return array_key_exists( $name, $this->settings );
+ }
+
+ /**
+ * @see Config::set
+ */
+ public function set( $name, $value ) {
+ $this->settings[$name] = $value;
+ }
+}
--- /dev/null
+<?php
+/**
+ * Copyright 2014
+ *
+ * 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
+ *
+ * @file
+ */
+
+/**
+ * Provides a fallback sequence for Config objects
+ *
+ * @since 1.24
+ */
+class MultiConfig implements Config {
+
+ /**
+ * Array of Config objects to use
+ * Order matters, the Config objects
+ * will be checked in order to see
+ * whether they have the requested setting
+ *
+ * @var Config[]
+ */
+ private $configs;
+
+ /**
+ * @param Config[] $configs
+ */
+ public function __construct( array $configs ) {
+ $this->configs = $configs;
+ }
+
+ /**
+ * @see Config::get
+ */
+ public function get( $name ) {
+ foreach ( $this->configs as $config ) {
+ if ( $config->has( $name ) ) {
+ return $config->get( $name );
+ }
+ }
+
+ throw new ConfigException( __METHOD__ . ": undefined option: '$name'" );
+ }
+
+ /**
+ * @see Config::has
+ */
+ public function has( $name ) {
+ foreach ( $this->configs as $config ) {
+ if ( $config->has( $name ) ) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+}
}
}
- $cache = HTMLFileCache::newFromTitle( $t, 'view' );
+ $cache = new HTMLFileCache( $t, 'view' );
if ( $cache->isCached() ) {
return $cache->fetchText();
} else {
// old row, populate from key
$this->sha1 = LocalRepo::getHashFromKey( $this->key );
}
+ if ( !$this->title ) {
+ $this->title = Title::makeTitleSafe( NS_FILE, $row->fa_name );
+ }
}
/**
* @return Title
*/
public function getTitle() {
+ if ( !$this->title ) {
+ $this->load();
+ }
return $this->title;
}
public function userCan( $field, User $user = null ) {
$this->load();
- return Revision::userCanBitfield( $this->deleted, $field, $user );
+ $title = $this->getTitle();
+ return Revision::userCanBitfield( $this->deleted, $field, $user, $title ? : null );
}
}
if ( isset( $option['pass'] ) ) {
$this->setVar( '_AdminPassword', $option['pass'] );
}
+
+ // Set up the default skins
+ $skins = $this->findExtensions( 'skins' );
+ $this->setVar( '_Skins', $skins );
+
+ if ( $skins ) {
+ $skinNames = array_map( 'strtolower', $skins );
+ $this->setVar( 'wgDefaultSkin', $this->getDefaultSkin( $skinNames ) );
+ }
}
/**
return $exts;
}
+ /**
+ * Returns a default value to be used for $wgDefaultSkin: the preferred skin, if available among
+ * the installed skins, or any other one otherwise.
+ *
+ * @param string[] $skinNames Names of installed skins.
+ * @return string
+ */
+ public function getDefaultSkin( array $skinNames ) {
+ $defaultSkin = $GLOBALS['wgDefaultSkin'];
+ if ( in_array( $defaultSkin, $skinNames ) ) {
+ return $defaultSkin;
+ } else {
+ return $skinNames[0];
+ }
+ }
+
/**
* Installs the auto-detected extensions.
*
'var' => 'wgDefaultSkin',
'itemLabels' => array_fill_keys( $skinNames, 'config-skins-use-as-default' ),
'values' => $skinNames,
- 'value' => $this->getVar( 'wgDefaultSkin', $this->getDefaultSkin( $skinNames ) ),
+ 'value' => $this->getVar( 'wgDefaultSkin', $this->parent->getDefaultSkin( $skinNames ) ),
) );
foreach ( $skins as $skin ) {
$this->addHTML( $this->getCCDoneBox() );
}
- /**
- * Returns a default value to be used for $wgDefaultSkin: the preferred skin, if available among
- * the installed skins, or any other one otherwise.
- *
- * @param string[] $skinNames Names of installed skins.
- * @return string
- */
- public function getDefaultSkin( array $skinNames ) {
- $defaultSkin = $GLOBALS['wgDefaultSkin'];
- if ( in_array( $defaultSkin, $skinNames ) ) {
- return $defaultSkin;
- } else {
- return $skinNames[0];
- }
- }
-
/**
* If the user skips this installer page, we still need to set up the default skins, but ignore
* everything else.
if ( $skins ) {
$skinNames = array_map( 'strtolower', $skins );
- $this->parent->setVar( 'wgDefaultSkin', $this->getDefaultSkin( $skinNames ) );
+ $this->parent->setVar( 'wgDefaultSkin', $this->parent->getDefaultSkin( $skinNames ) );
}
return true;
"아라",
"Elseweyr",
"Lliehu",
- "Syreeni"
+ "Syreeni",
+ "Stryn"
]
},
"config-desc": "MediaWiki-asennin",
"config-env-good": "Asennusympäristö on tarkastettu.\nVoit asentaa MediaWikin.",
"config-env-bad": "Asennusympäristö on tarkastettu.\nEt voi asentaa MediaWikiä.",
"config-env-php": "PHP $1 on asennettu.",
+ "config-env-hhvm": "HHVM $1 on asennettu.",
"config-no-db": "Sopivaa tietokanta-ajuria ei löytynyt! Sinun täytyy asentaa tietokanta-ajurit PHP:lle.\nSeuraavat tietokantatyypit ovat tuettuja: $1.",
"config-outdated-sqlite": "<strong>Varoitus:</strong> sinulla on käytössä SQLite $1, joke on vanhempi kuin vähintään vaadittava versio $2. SQLite ei ole saatavilla.",
"config-safe-mode": "'''Varoitus:''' PHP:n [http://www.php.net/features.safe-mode safe mode] -tila on aktiivinen.\nSe voi aiheuttaa ongelmia erityisesti tiedostojen tallentamisen ja matemaattisten kaavojen kanssa.",
*/
protected $editor;
+ /**
+ * @param User $editor The editor that triggered the update. Their notification
+ * timestamp will not be updated(they have already seen it)
+ * @param Title $title The title to update timestamps for
+ * @param string $timestamp Set the upate timestamp to this value
+ * @return int[]
+ */
+ public static function updateWatchlistTimestamp( User $editor, Title $title, $timestamp ) {
+ global $wgEnotifWatchlist, $wgShowUpdatedMarker;
+
+ if ( !$wgEnotifWatchlist && !$wgShowUpdatedMarker ) {
+ return array();
+ }
+
+ $dbw = wfGetDB( DB_MASTER );
+ $res = $dbw->select( array( 'watchlist' ),
+ array( 'wl_user' ),
+ array(
+ 'wl_user != ' . intval( $editor->getID() ),
+ 'wl_namespace' => $title->getNamespace(),
+ 'wl_title' => $title->getDBkey(),
+ 'wl_notificationtimestamp IS NULL',
+ ), __METHOD__
+ );
+
+ $watchers = array();
+ foreach ( $res as $row ) {
+ $watchers[] = intval( $row->wl_user );
+ }
+
+ if ( $watchers ) {
+ // Update wl_notificationtimestamp for all watching users except the editor
+ $fname = __METHOD__;
+ $dbw->onTransactionIdle(
+ function () use ( $dbw, $timestamp, $watchers, $title, $fname ) {
+ $dbw->update( 'watchlist',
+ array( /* SET */
+ 'wl_notificationtimestamp' => $dbw->timestamp( $timestamp )
+ ), array( /* WHERE */
+ 'wl_user' => $watchers,
+ 'wl_namespace' => $title->getNamespace(),
+ 'wl_title' => $title->getDBkey(),
+ ), $fname
+ );
+ }
+ );
+ }
+
+ return $watchers;
+ }
+
/**
* Send emails corresponding to the user $editor editing the page $title.
* Also updates wl_notificationtimestamp.
public function notifyOnPageChange( $editor, $title, $timestamp, $summary,
$minorEdit, $oldid = false, $pageStatus = 'changed'
) {
- global $wgEnotifUseJobQ, $wgEnotifWatchlist, $wgShowUpdatedMarker, $wgEnotifMinorEdits,
- $wgUsersNotifiedOnAllChanges, $wgEnotifUserTalk;
+ global $wgEnotifUseJobQ, $wgEnotifMinorEdits, $wgUsersNotifiedOnAllChanges, $wgEnotifUserTalk;
if ( $title->getNamespace() < 0 ) {
return;
}
- // Build a list of users to notify
- $watchers = array();
- if ( $wgEnotifWatchlist || $wgShowUpdatedMarker ) {
- $dbw = wfGetDB( DB_MASTER );
- $res = $dbw->select( array( 'watchlist' ),
- array( 'wl_user' ),
- array(
- 'wl_user != ' . intval( $editor->getID() ),
- 'wl_namespace' => $title->getNamespace(),
- 'wl_title' => $title->getDBkey(),
- 'wl_notificationtimestamp IS NULL',
- ), __METHOD__
- );
- foreach ( $res as $row ) {
- $watchers[] = intval( $row->wl_user );
- }
- if ( $watchers ) {
- // Update wl_notificationtimestamp for all watching users except the editor
- $fname = __METHOD__;
- $dbw->onTransactionIdle(
- function () use ( $dbw, $timestamp, $watchers, $title, $fname ) {
- $dbw->update( 'watchlist',
- array( /* SET */
- 'wl_notificationtimestamp' => $dbw->timestamp( $timestamp )
- ), array( /* WHERE */
- 'wl_user' => $watchers,
- 'wl_namespace' => $title->getNamespace(),
- 'wl_title' => $title->getDBkey(),
- ), $fname
- );
- }
- );
- }
- }
+ // update wl_notificationtimestamp for watchers
+ $watchers = self::updateWatchlistTimestamp( $editor, $title, $timestamp );
$sendEmail = true;
// If nobody is watching the page, and there are no users notified on all changes
$called = true;
if ( $this->isFileCacheable() ) {
- $cache = HTMLFileCache::newFromTitle( $this->getTitle(), 'view' );
+ $cache = new HTMLFileCache( $this->getTitle(), 'view' );
if ( $cache->isCacheGood( $this->mPage->getTouched() ) ) {
wfDebug( "Article::tryFileCache(): about to load file\n" );
$cache->loadFromFileCache( $this->getContext() );
'qc_value' => $value );
}
- $dbw->begin( __METHOD__ );
+ $dbw->startAtomic( __METHOD__ );
# Clear out any old cached data
$dbw->delete( 'querycache', array( 'qc_type' => $this->getName() ), $fname );
# Save results into the querycache table on the master
$dbw->insert( 'querycache_info',
array( 'qci_type' => $this->getName(), 'qci_timestamp' => $dbw->timestamp() ),
$fname );
- $dbw->commit( __METHOD__ );
+ $dbw->endAtomic( __METHOD__ );
}
} catch ( DBError $e ) {
if ( !$ignoreErrors ) {
// Minimum user level required to access this page, or "" for anyone.
// Also used to categorise the pages in Special:Specialpages
- private $mRestriction;
+ protected $mRestriction;
// Listed in Special:Specialpages?
private $mListed;
private static $aliases;
/**
- * Get the special page list
+ * Reset the internal list of special pages. Useful when changing $wgSpecialPages after
+ * the internal list has already been initialized, e.g. during testing.
+ */
+ public static function resetList() {
+ self::$list = null;
+ self::$aliases = null;
+ }
+
+ /**
+ * Returns a list of canonical special page names.
+ * May be used to iterate over all registered special pages.
+ *
+ * @return string[]
+ */
+ public static function getNames() {
+ return array_keys( get_object_vars( self::getListObject() ) );
+ }
+
+ /**
+ * Get the special page list as an object, with each special page represented by a member
+ * field in the object.
*
- * @return array
+ * @deprecated since 1.24, use getNames() instead.
+ * @return object
*/
- static function getList() {
+ public static function getList() {
+ wfDeprecated( __FUNCTION__, '1.24' );
+ return self::getListObject();
+ }
+
+ /**
+ * Get the special page list as an object, with each special page represented by a member
+ * field in the object.
+ *
+ * @return object
+ */
+ private static function getListObject() {
global $wgSpecialPages;
global $wgDisableCounters, $wgDisableInternalSearch, $wgEmailAuthentication;
global $wgEnableEmail, $wgEnableJavaScriptTest;
// This hook can be used to remove undesired built-in special pages
wfRunHooks( 'SpecialPage_initList', array( &self::$list ) );
+ self::$list = (object)self::$list;
+
wfProfileOut( __METHOD__ );
}
* contain at least one entry (English fallbacks will be added if necessary).
* @return object
*/
- static function getAliasList() {
+ private static function getAliasListObject() {
if ( !is_object( self::$aliases ) ) {
global $wgContLang;
$aliases = $wgContLang->getSpecialPageAliases();
- $missingPages = self::getList();
+ // Objects are passed by reference by default, need to create a copy
+ $missingPages = clone self::getListObject();
self::$aliases = array();
// Check for $aliases being an array since Language::getSpecialPageAliases can return null
$caseFoldedAlias = $wgContLang->caseFold( $bits[0] );
$caseFoldedAlias = str_replace( ' ', '_', $caseFoldedAlias );
- if ( isset( self::getAliasList()->$caseFoldedAlias ) ) {
- $name = self::getAliasList()->$caseFoldedAlias;
+ if ( isset( self::getAliasListObject()->$caseFoldedAlias ) ) {
+ $name = self::getAliasListObject()->$caseFoldedAlias;
} else {
return array( null, null );
}
public static function exists( $name ) {
list( $title, /*...*/ ) = self::resolveAlias( $name );
- $specialPageList = self::getList();
- return isset( $specialPageList[$title] );
+ return property_exists( self::getListObject(), $title );
}
/**
*/
public static function getPage( $name ) {
list( $realName, /*...*/ ) = self::resolveAlias( $name );
- $specialPageList = self::getList();
- if ( isset( $specialPageList[$realName] ) ) {
- $rec = $specialPageList[$realName];
+ if ( property_exists( self::getListObject(), $realName ) ) {
+ $rec = self::getListObject()->$realName;
+
if ( is_string( $rec ) ) {
$className = $rec;
-
- return new $className;
+ $page = new $className;
+ } elseif ( is_callable( $rec ) ) {
+ // Use callback to instantiate the special page
+ $page = call_user_func( $rec );
} elseif ( is_array( $rec ) ) {
$className = array_shift( $rec );
// @deprecated, officially since 1.18, unofficially since forever
wfDeprecated( "Array syntax for \$wgSpecialPages is deprecated ($className), " .
"define a subclass of SpecialPage instead.", '1.18' );
- $specialPageList[$realName] = MWFunction::newObj( $className, $rec );
+ $page = MWFunction::newObj( $className, $rec );
+ } elseif ( $rec instanceof SpecialPage ) {
+ $page = $rec; //XXX: we should deep clone here
+ } else {
+ $page = null;
+ }
+
+ if ( $page instanceof SpecialPage ) {
+ return $page;
+ } else {
+ // It's not a classname, nor a callback, nor a legacy constructor array,
+ // nor a special page object. Give up.
+ wfLogWarning( "Cannot instantiate special page $realName: bad spec!" );
+ return null;
}
- return $specialPageList[$realName];
} else {
return null;
}
global $wgUser;
$user = $wgUser;
}
- foreach ( self::getList() as $name => $rec ) {
+ foreach ( self::getListObject() as $name => $rec ) {
$page = self::getPage( $name );
if ( $page ) { // not null
$page->setContext( RequestContext::getMain() );
*/
public static function getRegularPages() {
$pages = array();
- foreach ( self::getList() as $name => $rec ) {
+ foreach ( self::getListObject() as $name => $rec ) {
$page = self::getPage( $name );
if ( $page->isListed() && !$page->isRestricted() ) {
$pages[$name] = $page;
global $wgUser;
$user = $wgUser;
}
- foreach ( self::getList() as $name => $rec ) {
+ foreach ( self::getListObject() as $name => $rec ) {
$page = self::getPage( $name );
if (
$page->isListed()
* @param IContextSource $context
* @return string HTML fragment
*/
- static function capturePath( Title $title, IContextSource $context ) {
+ public static function capturePath( Title $title, IContextSource $context ) {
global $wgOut, $wgTitle, $wgRequest, $wgUser, $wgLang;
// Save current globals
* @param string|bool $subpage
* @return string
*/
- static function getLocalNameFor( $name, $subpage = false ) {
+ public static function getLocalNameFor( $name, $subpage = false ) {
global $wgContLang;
$aliases = $wgContLang->getSpecialPageAliases();
* @param string $alias
* @return Title|null Title or null if there is no such alias
*/
- static function getTitleForAlias( $alias ) {
+ public static function getTitleForAlias( $alias ) {
list( $name, $subpage ) = self::resolveAlias( $alias );
if ( $name != null ) {
return SpecialPage::getTitleFor( $name, $subpage );
}
protected function alterForm( HTMLForm $form ) {
+ $form->setDisplayFormat( 'vform' );
$form->setId( 'mw-changeemail-form' );
$form->setTableId( 'mw-changeemail-table' );
- $form->setWrapperLegendMsg( 'changeemail-header' );
+ $form->setWrapperLegend( false );
$form->setSubmitTextMsg( 'changeemail-submit' );
- $form->addButton( 'wpCancel', $this->msg( 'changeemail-cancel' )->text(),
- null, array( 'formnovalidate')
- );
$form->addHiddenField( 'returnto', $this->getRequest()->getVal( 'returnto' ) );
}
$link = $this->makeOptionsLink( $linkMessage->text(),
array( $key => 1 - $options[$key] ), $nondefaults );
- $links[] = $this->msg( $msg )->rawParams( $link )->escaped();
+ $links[] = "<span class=\"$msg rcshowhideoption\">" . $this->msg( $msg )->rawParams( $link )->escaped() . '</span>';
}
// show from this onward link
$now = $lang->userTimeAndDate( $timestamp, $user );
$timenow = $lang->userTime( $timestamp, $user );
$datenow = $lang->userDate( $timestamp, $user );
- $rclinks = $this->msg( 'rclinks' )->rawParams( $cl, $dl, $lang->pipeList( $links ) )
- ->parse();
- $rclistfrom = $this->makeOptionsLink(
+ $pipedLinks = '<span class="rcshowhide">' . $lang->pipeList( $links ) . '</span>';
+
+ $rclinks = '<span class="rclinks">' . $this->msg( 'rclinks' )->rawParams( $cl, $dl, $pipedLinks )
+ ->parse() . '</span>';
+
+ $rclistfrom = '<span class="rclistfrom">' . $this->makeOptionsLink(
$this->msg( 'rclistfrom' )->rawParams( $now, $timenow, $datenow )->parse(),
array( 'from' => $timestamp ),
$nondefaults
- );
+ ) . '</span>';
return "{$note}$rclinks<br />$rclistfrom";
}
$this->mUnsuppress = $request->getVal( 'wpUnsuppress' ) && $user->isAllowed( 'suppressrevision' );
$this->mToken = $request->getVal( 'token' );
- if ( $user->isAllowed( 'undelete' ) && !$user->isBlocked() ) {
+ if ( $this->isAllowed( 'undelete' ) && !$user->isBlocked() ) {
$this->mAllowed = true; // user can restore
$this->mCanView = true; // user can view content
- } elseif ( $user->isAllowed( 'deletedtext' ) ) {
+ } elseif ( $this->isAllowed( 'deletedtext' ) ) {
$this->mAllowed = false; // user cannot restore
$this->mCanView = true; // user can view content
$this->mRestore = false;
}
}
+ /**
+ * Checks whether a user is allowed the permission for the
+ * specific title if one is set.
+ *
+ * @param string $permission
+ * @param User $user
+ * @return bool
+ */
+ private function isAllowed( $permission, User $user = null ) {
+ $user = $user ? : $this->getUser();
+ if ( $this->mTargetObj !== null ) {
+ return $this->mTargetObj->userCan( $permission, $user );
+ } else {
+ return $user->isAllowed( $permission );
+ }
+ }
+
+ function userCanExecute( User $user ) {
+ return $this->isAllowed( $this->mRestriction, $user );
+ }
+
function execute( $par ) {
- $this->checkPermissions();
$user = $this->getUser();
$this->setHeaders();
$this->outputHeader();
$this->loadRequest( $par );
+ $this->checkPermissions(); // Needs to be after mTargetObj is set
$out = $this->getOutput();
$ts = wfTimestamp( TS_MW, $row->fa_timestamp );
$user = $this->getUser();
- if ( $this->mAllowed && $row->fa_storage_key ) {
- $checkBox = Xml::check( 'fileid' . $row->fa_id );
+ $checkBox = '';
+ if ( $this->mCanView && $row->fa_storage_key ) {
+ if ( $this->mAllowed ) {
+ $checkBox = Xml::check( 'fileid' . $row->fa_id );
+ }
$key = urlencode( $row->fa_storage_key );
$pageLink = $this->getFileLink( $file, $this->getPageTitle(), $ts, $key );
} else {
- $checkBox = '';
$pageLink = $this->getLanguage()->userTimeAndDate( $ts, $user );
}
$userLink = $this->getFileUser( $file );
$comment = $this->getFileComment( $file );
// Add show/hide deletion links if available
- $canHide = $user->isAllowed( 'deleterevision' );
- if ( $canHide || ( $file->getVisibility() && $user->isAllowed( 'deletedhistory' ) ) ) {
+ $canHide = $this->isAllowed( 'deleterevision' );
+ if ( $canHide || ( $file->getVisibility() && $this->isAllowed( 'deletedhistory' ) ) ) {
if ( !$file->userCan( File::DELETED_RESTRICTED, $user ) ) {
// Revision was hidden from sysops
$revdlink = Linker::revDeleteLinkDisabled( $canHide );
"protect-othertime": "Іншы тэрмін:",
"protect-othertime-op": "іншы тэрмін",
"protect-existing-expiry": "Наяўны час сканчэньня: $3, $2",
+ "protect-existing-expiry-infinity": "Наяўны тэрмін сканчэньня: бясконца",
"protect-otherreason": "Іншая/дадатковая прычына:",
"protect-otherreason-op": "Іншая прычына",
"protect-dropdown": "*Звычайныя прычыны абароны\n** Часты вандалізм\n** Празьмерны спам\n** Непрадуктыўная вайна рэдагаваньняў\n** Папулярная старонка",
"protect-othertime": "Jiný čas vypršení:",
"protect-othertime-op": "jiný čas",
"protect-existing-expiry": "Současný čas vypršení: $2, $3",
+ "protect-existing-expiry-infinity": "Současný čas vypršení: do odvolání",
"protect-otherreason": "Jiný/další důvod:",
"protect-otherreason-op": "Jiný důvod",
"protect-dropdown": "*Obvyklé důvody zamčení\n** Opakovaný vandalismus\n** Vkládání reklamních externích odkazů\n** Editační válka\n** Často používaná stránka",
"protect-othertime": "Andere Sperrdauer:",
"protect-othertime-op": "andere Sperrdauer",
"protect-existing-expiry": "Aktuelles Seitenschutzende: $2, $3 Uhr",
+ "protect-existing-expiry-infinity": "Vorhandene Ablaufzeit: unbeschränkt",
"protect-otherreason": "Anderer/ergänzender Grund:",
"protect-otherreason-op": "Anderer Grund",
"protect-dropdown": "* Allgemeine Schutzgründe\n** Edit-War\n** Wiederkehrender Vandalismus\n** Wiederholtes Einstellen von Werbung\n** Häufig eingebundene Vorlage\n** Seite mit hoher Besucherzahl",
"protect-othertime": "זמן אחר:",
"protect-othertime-op": "זמן אחר",
"protect-existing-expiry": "זמן פקיעה נוכחי: $3, $2",
+ "protect-existing-expiry-infinity": "זמן תפוגה נוכחי: אינסופי",
"protect-otherreason": "סיבה אחרת/נוספת:",
"protect-otherreason-op": "סיבה אחרת",
"protect-dropdown": "* סיבות הגנה נפוצות\n** השחתה רבה\n** ספאם רב\n** מלחמת עריכה בלתי מועילה\n** דף בשימוש רב",
"protect-othertime": "Durata non in elenco:",
"protect-othertime-op": "durata non in elenco",
"protect-existing-expiry": "Scadenza attuale: $2, $3",
+ "protect-existing-expiry-infinity": "Scadenza attuale: infinito",
"protect-otherreason": "Altri motivi/dettagli:",
"protect-otherreason-op": "Altra motivazione",
"protect-dropdown": "*Motivi comuni di protezione\n** Reiterati vandalismi\n** Reiterati inserimenti di spam\n** Edit war\n** Pagina molto usata",
"signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|トーク]])",
"unknown_extension_tag": "不明な拡張機能タグ「$1」です",
"duplicate-defaultsort": "<strong>警告:</strong> 既定のソートキー「$2」が、その前に書かれている既定のソートキー「$1」を上書きしています。",
- "duplicate-displaytitle": "<strong>警告:</strong> 既定のDISPLAYTITLE「$2」が、その前に書かれている既定のDISPLAYTITLE「$1」を上書きしています。",
+ "duplicate-displaytitle": "<strong>警告:</strong> DISPLAYTITLE「$2」が、その前に書かれているDISPLAYTITLE「$1」を上書きしています。",
"version": "バージョン情報",
"version-extensions": "インストール済み拡張機能",
"version-skins": "インストール済み外装",
"protectedarticle": "حفاظت بيه [[$1]]",
"modifiedarticleprotection": "ریتراز حفاظت د \"[[$1]]\" آلشت بیه",
"protect-title": "ریتراز حفاظت د \"$1\" آلشت بیه",
+ "protect-title-notallowed": "دیئن ریتراز پر و پیم \"$1\"",
"prot_1movedto2": "[[$1]] د [[$2]] جا وه جا بی",
+ "protect-badnamespace-title": "نوم جا بی پر و پیم",
"protect-norestrictiontypes-title": "بلگه بی حامین گر",
"protect-legend": "پشت راس کردن حامین گری",
"protectcomment": "دلیل:",
"protect_expiry_invalid": "گات تموم بیین نامعتوره.",
"protect_expiry_old": "گات تموم بیین مال دماتره.",
"protect-default": "همه کاروریا اجازه دارن",
+ "protect-level-sysop": "فقط دیوونداریا",
"protect-summary-desc": "[$1=$2] ($3)",
"protect-summary-cascade": "د حال و بال تافنمایی",
"protect-expiring": "گات تموم بیین $1 (یو تی سی)",
"badipaddress": "تیرنشون نامعتور آی پی",
"blockipsuccesssub": "قلف کردن د خوئی انجوم بی",
"ipb-edit-dropdown": "ویرایشت دلیلیا نهاگرتن",
+ "ipb-unblock-addr": "وا کردن قلف $1",
"unblockip": "کارور منع نبیه",
"ipusubmit": "ای قلف نه ؤردار",
"blocklist": "كاروريا منع بيه",
"ipblocklist": "كاروريا منع بيه",
"ipblocklist-legend": "یه گل کارور منع بیه بجوریت",
"blocklist-timestamp": "چسب ون وخت",
+ "blocklist-expiry": "تموم بين",
"blocklist-reason": "دلیل",
"ipblocklist-submit": "پی جوری",
"ipblocklist-localblock": "نهاگری ولات نشینی",
"import": "وامین اوردن بلگه یا",
"import-interwiki-sourcewiki": "سرچشمه ویکی:",
"import-interwiki-sourcepage": "بلگه سرچشمه:",
+ "import-interwiki-templates": "همه چوئه یا",
"import-interwiki-submit": "وامین اوردن",
"import-interwiki-namespace": "نومجا مقصد:",
"import-upload-filename": "نوم جانیا:",
"mywatchlist": "Uzraugāmie raksti",
"watchlistfor2": "Priekš $1 ($2)",
"nowatchlist": "Tavā uzraugāmo rakstu sarakstā nav neviena raksta.",
- "watchlistanontext": "Lūdzu $1, lai apskatītu vai labotu savu uzraugāmo rakstu saraksta saturu.",
+ "watchlistanontext": "Lūdzu pieslēdzies, lai apskatītu vai labotu savu uzraugāmo rakstu saraksta saturu.",
"watchnologin": "Neesi iegājis",
"addwatch": "Pievienot uzraugāmo lapu sarakstam",
"addedwatchtext": "Lapa \"[[:$1]]\" ir pievienota [[Special:Watchlist|tevis uzraudzītajām lapām]], kur tiks parādītas izmaiņas, kas izdarītas šajā lapā vai šīs lapas diskusiju lapā, kā arī šī lapa tiks iezīmēta '''pustrekna''' [[Special:RecentChanges|pēdējo izmaiņu lapā]], lai to būtu vieglāk pamanīt.\n\nJa vēlāk pārdomāsi un nevēlēsies vairs uzraudzīt šo lapu, klikšķini uz saites '''neuzraudzīt''' rīku joslā.",
"allpagesbadtitle": "Дадениот наслов е неважечки или има меѓујазичен или меѓувики-претставка. Може да содржи повеќе знаци кои не смеат да се користат во наслови.",
"allpages-bad-ns": "Википедија не содржи именски простор „$1“.",
"allpages-hide-redirects": "Скриј пренасочувања",
- "cachedspecial-viewing-cached-ttl": "Ð\93ледаÑ\82е кеÑ\88ирана верзија на оваа страница, која може да е стара $1.",
- "cachedspecial-viewing-cached-ts": "Ð\93ледаÑ\82е кеÑ\88ирана верзија на оваа страница, која може да се разликува од тековната.",
+ "cachedspecial-viewing-cached-ttl": "Ð\93ледаÑ\82е меÑ\93Ñ\83Ñ\81кладирана верзија на оваа страница, која може да е стара $1.",
+ "cachedspecial-viewing-cached-ts": "Ð\93ледаÑ\82е меÑ\93Ñ\83Ñ\81кладирана верзија на оваа страница, која може да се разликува од тековната.",
"cachedspecial-refresh-now": "Погл. најновата.",
"categories": "Категории",
"categoriespagetext": "{{PLURAL:$1|Следната категорија содржи|Следните категории содржат}} страници или мултимедијални податотеки.\n[[Special:UnusedCategories|Неискористените категории]] не се прикажани овде.\nПогледајте ги и [[Special:WantedCategories|потребните категории]].",
"protect-othertime": "Друго време:",
"protect-othertime-op": "друго време",
"protect-existing-expiry": "Постоечки рок на истекување: $3, $2",
+ "protect-existing-expiry-infinity": "Постоечки рок: бесконечен",
"protect-otherreason": "Друга/дополнителна причина:",
"protect-otherreason-op": "Друга причина",
"protect-dropdown": "*Вообичаени причини за заштита\n** Зачестен вандализам\n** Зачестен спам\n** Непродуктивна уредувачка војна\n** Страница со зачестена посета\n** Сеприсутност на шаблонот/превметнувањето\n** Административна постапка",
"dberr-info-hidden": "(Не може да се добие опслужувачот на базата на податоци)",
"dberr-usegoogle": "Во меѓувреме можете да се обидете да пребарувате со Google.",
"dberr-outofdate": "Да напоменеме дека нивните индекси на нашата содржина можат да бидат застарени.",
- "dberr-cachederror": "Следнава Ñ\81одÑ\80жина е кеÑ\88иÑ\80ана копиÑ\98а на баÑ\80анаÑ\82а Ñ\81Ñ\82Ñ\80аниÑ\86а, коÑ\98а може да е заÑ\81Ñ\82аÑ\80ена.",
+ "dberr-cachederror": "Следнава Ñ\81одÑ\80жина е меÑ\93Ñ\83Ñ\81кладиÑ\80ан пÑ\80имеÑ\80ок на баÑ\80анаÑ\82а Ñ\81Ñ\82Ñ\80аниÑ\86а, коÑ\98 може да е заÑ\81Ñ\82аÑ\80ен.",
"htmlform-invalid-input": "Има проблеми со дел од вашиот внос",
"htmlform-select-badoption": "Укажаната вредност е неважечка како можност.",
"htmlform-int-invalid": "Вредноста која ја наведовте не е цел број.",
"protect-othertime": "Inny okres",
"protect-othertime-op": "inny okres",
"protect-existing-expiry": "Obecny czas wygaśnięcia: $2 o $3",
+ "protect-existing-expiry-infinity": "Obecny czas wygaśnięcia: nieskończony",
"protect-otherreason": "Inny lub dodatkowy powód",
"protect-otherreason-op": "Inny powód",
"protect-dropdown": "*Najczęstsze powody zabezpieczenia\n** Częste wandalizmy\n** Częste spamowanie\n** Wojna edycyjna\n** Wygłupy",
"protect-othertime": "Другое время:",
"protect-othertime-op": "другое время",
"protect-existing-expiry": "Текущее время окончания: $2, $3",
+ "protect-existing-expiry-infinity": "Текущее время окончания: бесконечно",
"protect-otherreason": "Другая причина/дополнение:",
"protect-otherreason-op": "Другая причина",
"protect-dropdown": "* Типовые причины защиты\n** частый вандализм\n** чрезмерный спам\n** непродуктивная война правок\n** популярная страница",
"revdelete-hide-text": "Testu de sa versione",
"revdelete-hide-image": "Cua su cuntènnidu de su documentu",
"revdelete-hide-comment": "Modìfica s'ogetu",
+ "revdelete-radio-same": "(non cambiare)",
"revdelete-radio-set": "Cua",
"revdelete-radio-unset": "Ammustra",
"revdelete-log": "Motivu:",
"prefs-watchlist-edits-max": "Cantidade màssima: 1000",
"prefs-misc": "Àteras preferèntzias",
"prefs-resetpass": "Càmbia password",
+ "prefs-changeemail": "Càmbia indiritzu email",
"prefs-email": "Sèberos pro sa email",
"prefs-rendering": "Aparèntzia",
"saveprefs": "Sarva preferèntzias",
"sourceurl": "Diretzione originària:",
"destfilename": "Nùmene de su file de destinatzione:",
"upload-description": "Descritzione de su file",
+ "watchthisupload": "Annota custu documentu",
"upload-success-subj": "Carrigamentu acabau",
"upload-failure-subj": "Problema de carrimentu",
"upload-file-error": "Faddina a intru",
"listfiles_size": "Mannesa in byte",
"listfiles_description": "Descritzione",
"listfiles_count": "Versiones",
+ "listfiles-latestversion": "Versione atuale",
"listfiles-latestversion-yes": "Eja",
"listfiles-latestversion-no": "No",
"file-anchor-link": "File",
"filedelete-success": "Su file '''$1''' est istadu fuliau.",
"filedelete-otherreason": "Motivu diversu o agiuntivu:",
"filedelete-reason-otherlist": "Àteru motivu",
+ "filedelete-edit-reasonlist": "Càmbia is motivos de sa burradura",
"mimesearch": "Chirca MIME",
"mimetype": "Genia MIME:",
"download": "scàrriga",
+ "unwatchedpages": "Pàginas no annotadas",
"listredirects": "Lista de totu is redirects",
+ "listduplicatedfiles": "Lista de documentos dopios",
+ "unusedtemplates": "Templates no impreados",
"unusedtemplateswlh": "àteros ligòngios",
"randompage": "Pàgina a sa tzurpa",
"randomincategory-category": "Categoria:",
"statistics": "Statìsticas",
"statistics-header-pages": "Statìsticas subra is pàginas",
+ "statistics-header-edits": "Càmbia is statìsticas",
+ "statistics-header-views": "Càstia is statìsticas",
"statistics-header-users": "Statìsticas subra is usuàrios",
+ "statistics-header-hooks": "Àteras statìsticas",
+ "statistics-articles": "Pàginas de càbidos",
"statistics-pages": "Pàginas",
+ "statistics-files": "Documentos carrigados",
"pageswithprop-submit": "Bae",
"doubleredirects": "Redirects dòpios",
"doubleredirectstext": "Custa pàgina cuntenet una lista de pàginas ki re-indiritzant a àteras pàginas de re-indiritzamentu.\nOgni lìnia cuntenet ligàmines a su primu e a su de duos re-indiritzamentu, aici comente sa prima lìnia de sa de duos re-indiritzamentos, chi de sòlitu adòbiat s'artìculu \"beru\", a sa cale fintzas su primu re-indiritzamentu dia depet puntare.\nIs re-indiritzamentos <del>cantzellados</del> sunt stados curretos.",
"withoutinterwiki-submit": "Ammustra",
"nbytes": "$1 {{PLURAL:$1|byte|bytes}}",
"ncategories": "$1 {{PLURAL:$1|categoria|categorias}}",
+ "ninterwikis": "$1 {{PLURAL:$1|interwiki|interwikis}}",
"nlinks": "$1 {{PLURAL:$1|ligàmene|ligàmenes}}",
"nmembers": "$1 {{PLURAL:$1|cumponente|cumponentes}}",
"nrevisions": "$1 {{PLURAL:$1|revisione|revisiones}}",
"protect-othertime": "Drugačen čas:",
"protect-othertime-op": "drugačen čas",
"protect-existing-expiry": "Obstoječ čas izteka: $3, $2",
+ "protect-existing-expiry-infinity": "Obstoječ čas izteka: neskončno",
"protect-otherreason": "Drug/dodaten razlog:",
"protect-otherreason-op": "Drug razlog",
"protect-dropdown": "*Pogosti razlogi za zaščito\n** Prekomeren vandalizem\n** Vztrajno dodajanje reklamnih povezav\n** Neproduktivne urejevalske vojne\n** Zelo obiskana stran",
"tog-extendwatchlist": "Legaan béréndélan ngarah sakabéh parobahanana kaawaskeun",
"tog-usenewrc": "Parobahan grup dumasar kaca dina béréndélan anyar robah jeung awaskeuneun (maké JavaScript)",
"tog-numberheadings": "Nomeran lulugu sacara otomatis",
- "tog-showtoolbar": "Témbongkeun ''toolbar'' édit (JavaScript)",
- "tog-editondblclick": "Édit kaca ku klik ganda (JavaScript)",
- "tog-editsectiononrightclick": "Fungsikeun ngédit sub-bagean kalawan klik-katuhu dina judul bagean (JavaScript)",
+ "tog-showtoolbar": "Témbongkeun tulbar édit",
+ "tog-editondblclick": "Édit kaca ku klik ganda",
+ "tog-editsectiononrightclick": "Fungsikeun ngédit sub-bagean kalawan klik-katuhu dina judul bagéan",
"tog-watchcreations": "Tambahkeun kaca-kaca jieunan kuring jeung berkas muatan kuring kana awaskeuneun",
"tog-watchdefault": "Tambahkeun kaca jeung berkas anu diédit ku kuring kana awaskeuneun",
"tog-watchmoves": "Tambahkeun kaca jeung berkas anu dipindahkeun ka awaskeuneun",
"tog-shownumberswatching": "Témbongkeun jumlah nu ngawaskeun",
"tog-oldsig": "Paraf nu geus aya:",
"tog-fancysig": "Témbongkeun paraf salaku wikitext (tanpa tumbu otomatis)",
- "tog-uselivepreview": "Paké pramidang saharita (JavaScript) (ujicoba)",
+ "tog-uselivepreview": "Paké pramidang saharita (ujicoba)",
"tog-forceeditsummary": "Mun kotak ringkesan éditan masih kosong, béjaan!",
"tog-watchlisthideown": "Sumputkeun éditan kuring dina daptar awaskeuneun",
"tog-watchlisthidebots": "Sumputkeun éditan bot dina daptar awaskeuneun",
"tog-showhiddencats": "Témbongkeun kategori nyumput",
"tog-norollbackdiff": "Liwat béda sanggeus malikkeun révisi",
"tog-useeditwarning": "Béjaan kuring lamun ninggalkeun kaca édit anu parobahanana can disimpen",
+ "tog-prefershttps": "Salawasna paké sambungan aman nalika asup log",
"underline-always": "Salawasna",
"underline-never": "Ulah",
"underline-default": "Luyu jeung buhunna panyungsi",
"thursday": "Kemis",
"friday": "Jumaah",
"saturday": "Saptu",
- "sun": "Min",
+ "sun": "Ming",
"mon": "Sen",
"tue": "Sal",
"wed": "Reb",
"oct": "Okt",
"nov": "Nop",
"dec": "Dés",
+ "january-date": "$1 Januari",
+ "february-date": "$1 Pébruari",
+ "march-date": "$1 Maret",
+ "april-date": "$1 April",
+ "may-date": "$1 Méi",
+ "june-date": "$1 Juni",
+ "july-date": "$1 Juli",
+ "august-date": "$1 Agustus",
+ "september-date": "$1 Séptémber",
+ "october-date": "$1 Oktober",
+ "november-date": "$1 Nopémber",
+ "december-date": "$1 Désémber",
"pagecategories": "{{PLURAL:$1|Kategori|Kategori}}",
"category_header": "Artikel-artikel na kategori \"$1\"",
"subcategories": "Subkategori",
"newwindow": "(buka na jandéla anyar)",
"cancel": "Bolay",
"moredotdotdot": "Deui...",
- "mypage": "Kaca kuring",
+ "morenotlisted": "Ieu béréndélan tacan lengkep.",
+ "mypage": "Kaca",
"mytalk": "Obrolan",
"anontalk": "Obrolan pikeun IP ieu",
"navigation": "Pituduh",
"actions": "Peta",
"namespaces": "Spasi ngaran",
"variants": "Varian",
+ "navigation-heading": "Ménu navigasi",
"errorpagetitle": "Kasalahan",
"returnto": "Balik deui ka $1.",
"tagline": "Ti {{SITENAME}}",
"permalink": "Tutumbu permanén",
"print": "Citak",
"view": "Tempo",
+ "view-foreign": "Tempo di $1",
"edit": "Édit",
+ "edit-local": "Edit déskripsi lokal",
"create": "Jieun",
+ "create-local": "Tambah déskripsi lokal",
"editthispage": "Édit kaca ieu",
"create-this-page": "Jieun kaca ieu",
"delete": "Hapus",
"deletethispage": "Hapus kaca ieu",
+ "undeletethispage": "Bolaykeun ngahapus ieu kaca",
"undelete_short": "Bolaykeun ngahapus {{PLURAL:$1|hiji éditan|$1 éditan}}",
"viewdeleted_short": "Témbongkeun {{PLURAL:$1|hiji éditan nu dihapus|$1 éditan nu dihapus}}",
"protect": "Konci",
"articlepage": "Témbongkeun kaca eusi",
"talk": "Sawala",
"views": "Témbongan",
- "toolbox": "Kotak parabot",
+ "toolbox": "Parabot",
"userpage": "Témbongkeun kaca pamaké",
"projectpage": "Témbongkeun kaca proyék",
"imagepage": "Tempo kaca gambar",
"otherlanguages": "Dina séjén basa",
"redirectedfrom": "(dipindahkeun ti $1)",
"redirectpagesub": "Kaca alihan",
+ "redirectto": "Alihkeun ka:",
"lastmodifiedat": "Kaca ieu panungtungan dirobah $2, $1.",
"viewcount": "Kaca ieu geus dibuka {{PLURAL:$1|sakali|$1 kali}}.<br />",
"protectedpage": "Kaca nu dikonci",
"ok": "Heug",
"retrievedfrom": "Disalin ti \"$1\"",
"youhavenewmessages": "Anjeun boga $1 ($2).",
+ "youhavenewmessagesfromusers": "{{PLURAL:$4|Anjeun boga}} $1 ti {{PLURAL:$3|pamaké séjén|$3 pamaké}} ($2).",
+ "youhavenewmessagesmanyusers": "Anjeun boga $1 ti pamaké lian ($2).",
+ "newmessageslinkplural": "{{PLURAL:$1|obrolan anyar|obrolan anyar}}",
+ "newmessagesdifflinkplural": "{{PLURAL:$1|parobahan|999=parobahan}} panungtung",
"youhavenewmessagesmulti": "Anjeun boga talatah anyar di $1",
"editsection": "édit",
"editold": "édit",
"hidetoc": "sumputkeun",
"collapsible-collapse": "Tilepkeun",
"collapsible-expand": "Amparkeun",
+ "confirmable-confirm": "{{GENDER:$1|Anjeun}} geus yakin?",
+ "confirmable-yes": "Enya",
+ "confirmable-no": "Henteu",
"thisisdeleted": "Témbongkeun atawa simpen deui $1?",
"viewdeleted": "Témbongkeun $1?",
"restorelink": "$1 {{PLURAL:$1|éditan|éditan}} dihapus",
"nospecialpagetext": "<strong>Anjeun ménta kaca husus nu teu dipikawanoh.</strong>\nKaca husus anu bener bisa ditempo béréndélanana dina [[Special:SpecialPages|{{int:specialpages}}]].",
"error": "Kasalahan",
"databaseerror": "Kasalahan gudang data",
+ "databaseerror-query": "Kueri: $1",
+ "databaseerror-function": "Fungsi: $1",
+ "databaseerror-error": "Eror: $1",
"laggedslavemode": "Awas: kandungan kaca bisa baé teu mutahir.",
"readonly": "pangkalan data dikonci",
"enterlockreason": "Asupkeun alesan pikeun ngonci, kaasup kira-kira iraha konci ieu rék dibuka",
"viewsource-title": "Témbongkeun sumber pikeun $1",
"actionthrottled": "Peta diwates",
"actionthrottledtext": "Salaku tetengger anti-spam, anjeun teu diwenangkeun loba kitu peta dina jangka waktu anu sakitu heureutna. Mangga lajengkeun deui sanggeus sababaraha menit ka payun.",
- "protectedpagetext": "Ieu kaca dikonci ngarah teu bisa dirobah.",
+ "protectedpagetext": "Ieu kaca dijaga tina éditan atawa peta lianna.",
"viewsourcetext": "Anjeun bisa némbongkeun sarta nyalin sumber ieu kaca:",
"viewyourtext": "Anjeun bisa némbongkeun sarta nyalin sumber '''éditan anjeun''' ka ieu kaca:",
"protectedinterface": "Kaca ieu eusina teks antarmuka pikeun dipaké ku pakakas beyé sarta geus dikunci pikeun ngahindar ti kasalahan.",
"namespaceprotected": "Anjeun teu ngabogaan hak pikeun ngédit kaca di ngaranspasi '''$1'''.",
"customcssprotected": "Anjeun teu teu diwenangkeun pikeun ngédit ieu kaca CSS, sabab ngandung setélan pribadi kontributor séjén.",
"customjsprotected": "Anjeun teu teu diwenangkeun pikeun ngédit ieu kaca JavaScript, sabab ngandung setélan pribadi kontributor séjén.",
+ "mycustomcssprotected": "Anjeun teu boga kawenangan pikeun ngédit kaca CSS ieu.",
+ "mycustomjsprotected": "Anjeun teu boga kawenangan pikeun ngédit kaca JavaScript ieu.",
+ "myprivateinfoprotected": "Anjeun teu boga kawenangan pikeun ngédit émbaran pribadi anjeun.",
+ "mypreferencesprotected": "Anjeun teu boga kawenangan pikeun ngédit préferénsi anjeun.",
"ns-specialprotected": "Kaca dina ngaranspasi {{ns:special}} teu bisa di édit.",
"titleprotected": "Ieu judul dikonci ku [[User:$1|$1]] kalawan alesan ''$2''.",
+ "filereadonlyerror": "Berkas \"$1\" teu bisa dirobah kusabab répositori \"$2\" keur dina mode ukur-maca.\n\nKuncén anu ngonci méré alesan: \"$3\".",
+ "exception-nologin": "Henteu asup log",
+ "exception-nologin-text": "Mangga asup log pikeun bisa asup atawa ngarobah ieu kaca.",
"virus-badscanner": "Kasalahan konfigurasi: panyekén virus teu dipikawanoh: ''$1''",
"virus-scanfailed": "nyekén gagal (kode $1)",
"virus-unknownscanner": "antivirus teu dipikawanoh:",
"logouttext": "'''Anjeun ayeuna geus kaluar log.'''\n\nAnjeun bisa tetep migunakeun {{SITENAME}} bari anonim, atawa bisa <span class='plainlinks'>[$1 asup log deui]</span> salaku pamaké nu sarua atawa nu séjén deui.\nMangkahadé, sababaraha kaca bakal tetep némbongkeun saolah-olah anjeun asup log kénéh nepi ka anjeun ngosongkeun ''cache'' panyungsi anjeun.",
+ "welcomeuser": "Bagéa, $1!",
+ "welcomecreation-msg": "Akun anjeun geus dijieun.\nLamun minat, Anjeun bisa ngarobah [[Special:Preferences|préferénsi]] {{SITENAME}}.",
"yourname": "Sandiasma:",
+ "userlogin-yourname": "Sandiasma",
+ "userlogin-yourname-ph": "Asupkeun sandiasma anjeun",
+ "createacct-another-username-ph": "Asupkeun sandiasma",
"yourpassword": "Sandi anjeun",
+ "userlogin-yourpassword": "Kecap sandi",
+ "userlogin-yourpassword-ph": "Asupkeun kecap sandi anjeun",
+ "createacct-yourpassword-ph": "Asupkeun kecap sandi",
"yourpasswordagain": "Ketik deui sandi anjeun",
+ "createacct-yourpasswordagain": "Konfirmasi kecap sandi",
+ "createacct-yourpasswordagain-ph": "Asupkeun deui kecap sandi",
"remembermypassword": "Apalkeun login kuring dina ieu komputer (pikeun paling lila $1 {{PLURAL:$1|poé|poé}})",
+ "userlogin-signwithsecure": "Paké sambungan aman",
"yourdomainname": "Domain anjeun",
+ "password-change-forbidden": "Anjeun teu bisa ngarobah kecap sandi dina ieu wiki.",
"externaldberror": "Aya kasalahan dina pangkalan data oténtikasi luar, atawa anjeun mémang teu diwenangkeun pikeun ngaropéa rekening luar anjeun.",
"login": "Asup log",
"nav-login-createaccount": "Nyieun akun/asup log",
"logout": "Kaluar log",
"userlogout": "Kaluar log",
"notloggedin": "Can asup log",
+ "userlogin-noaccount": "Teu boga akun?",
+ "userlogin-joinproject": "Ngiluan {{SITENAME}}",
"nologin": "Teu boga akun? '''$1'''.",
"nologinlink": "Jieun akun",
"createaccount": "Jieun akun",
"gotaccount": "Geus boga akun? '''$1'''.",
"gotaccountlink": "Asup log",
"userlogin-resetlink": "Poho akun sorangan?",
- "createaccountmail": "ku surélék",
+ "userlogin-resetpassword-link": "Poho kecap sandi?",
+ "userlogin-helplink2": "Pitulung asup log",
+ "createacct-emailrequired": "Alamat surélék:",
+ "createacct-emailoptional": "Alamat surélék (teu wajib)",
+ "createacct-email-ph": "Asupkeun alamat surélék anjeun",
+ "createacct-another-email-ph": "Asupkeun alamat surélék",
+ "createaccountmail": "Paké kecap sandi acak sarta kirim ka alamat surélék",
+ "createacct-realname": "Ngaran asli (teu wajib)",
"createaccountreason": "Alesan:",
+ "createacct-reason": "Alesan",
+ "createacct-reason-ph": "Naha bet nyieun akun séjén",
+ "createacct-captcha": "Pamariksaan kaamanan",
+ "createacct-imgcaptcha-ph": "Asupkeun téks anu kabaca di luhur",
+ "createacct-submit": "Jieun akun anjeun",
+ "createacct-another-submit": "Jieun akun séjén",
+ "createacct-benefit-heading": "{{SITENAME}} téh dijieun ku jalma-jalma siga anjeun.",
+ "createacct-benefit-body1": "{{PLURAL:$1|édit|édit}}",
+ "createacct-benefit-body2": "{{PLURAL:$1|kaca|kaca}}",
+ "createacct-benefit-body3": "{{PLURAL:$1|kontributor|kontributor}} panungtung",
"badretype": "Sandi nu diasupkeun teu cocog.",
"userexists": "Sandiasma nu diasupkeun geus aya nu maké.\nMangga pilih sandiasma nu séjén.",
"loginerror": "Kasalahan asup log",
"passwordtooshort": "Sandina kudu diwangun ku sahanteuna {{PLURAL:$1|1 karakter|$1 karakter}}.",
"password-name-match": "Sandi anjeun kudu béda ti landihan.",
"password-login-forbidden": "Sandiasma jeung sandina teu bisa dipaké.",
- "mailmypassword": "Kirim sandi anyar ngaliwatan surélék",
+ "mailmypassword": "Setél ulang kecap sandi",
"passwordremindertitle": "Pangéling sandi ti {{SITENAME}}",
"passwordremindertext": "Aya (jigana anjeun ti alamat IP $1) nu ménta sangkan dikiriman sandi anyar asup log {{SITENAME}} ($4). Saheulaanan, sandi anyar keur pamaké \"$2\" ayeuna diganti jadi \"$3\". Anjeun kudu asup log sarta ngarobah sandi anjeun ayeuna. Ieu sandi bakal kadaluwarsa dina {{PLURAL:$5|sapoé|$5 poé}}.\n\nMun pamundut ieu datang ti nu séjén, atawa mun anjeun geus inget sandi anu tadina poho, sarta teu hayang ngarobah sandina, anjeun teu kudu ngawaro kana ieu surat sarta bisa tetep maké sandi anu ti heula.",
"noemail": "Teu aya alamat surélék karékam pikeun \"$1\".",
"noemailcreate": "Anjeun kudu nyadiakeun alamat surélék anu bener",
"passwordsent": "Sandi anyar geus dikirim ka alamat surélék nu kadaptar pikeun \"$1\". Mangga asup log deui satutasna katarima.",
"blocked-mailpassword": "Alamat IP anjeun dipeungpeuk, moal bisa ngédit, and so\nis not allowed to use the password recovery function to prevent abuse.",
- "eauthentsent": "Surélék konfirmasi geus dikirim ka alamat bieu. Méméh aya surat séjén asup ka rekeningna, anjeun kudu nuturkeun pituduh na surélékna pikeun ngonfirmasi yén rekening éta téh bener nu anjeun.",
+ "eauthentsent": "Surélék konfirmasi geus dikirim ka alamat bieu.\nMéméh aya surat séjén asup ka akunna, anjeun kudu nuturkeun pituduh dina surélékna pikeun mastikeun yén akun éta téh bener boga anjeun.",
"throttled-mailpassword": "Hiji panginget kecap sandi geus dikirimkeun dina {{PLURAL:$1|jam|$1 jam}} pamungkas.\nPikeun ngahindar disalahgunakeun, ngan hiji kecap sandi anu baris dikirimkeun saban {{PLURAL:$1|jam|$1 jam}}.",
"mailerror": "Kasalahan ngirim surat: $1",
"acct_creation_throttle_hit": "Punten,pamaké alamat IP anjeun geus nyieun {{PLURAL:$1|1 rekening|$1 rekening}} dina sapoé ieu. mangrupa jumlah nu di idinan dina sapoé.\nanjeun teu bisa nyieun deui samentara waktu.",
- "emailauthenticated": "Alamat surélék anjeun geus dioténtikasi dina $3, $2.",
- "emailnotauthenticated": "Alamat surélék anjeun <strong>can dioténtikasi</strong>. Moal aya surélék nu bakal dikirim pikeun fitur-fitur di handap ieu.",
+ "emailauthenticated": "Alamat surélék anjeun geus dikonfirmasi $2 tabuh $3.",
+ "emailnotauthenticated": "Alamat surélék anjeun can dikonfirmasi.\nMoal aya surélék nu bakal dikirim pikeun fitur-fitur di handap ieu.",
"noemailprefs": "Teu aya alamat surélék, fitur di handap moal bisa jalan.",
"emailconfirmlink": "Konfirmasi alamat surélék anjeun",
"invalidemailaddress": "Alamat surélék teu bisa ditarima sabab formatna salah.\nMangga lebetkeun alamat nu formatna bener atawa kosongkeun baé.",
"cannotchangeemail": "Alamat surat-é akun hanteu bisa dirobah di ieu wiki.",
+ "emaildisabled": "Ieu loka teu bisa ngirim surélék.",
"accountcreated": "Rekening geus dijieun.",
"accountcreatedtext": "Rekening pamaké pikeun $1 geus dijieun.",
"createaccount-title": "Nyieun rekening keur {{SITENAME}}",
"login-abort-generic": "Login gagal - Dibolaykeun",
"loginlanguagelabel": "Basa: $1",
"suspicious-userlogout": "Pamundut anjeun pikeun kaluar log ditolak ku sabab sigana dikirim ku pangaprak buntu atawa ''cache'' proxi.",
+ "pt-login": "Asup log",
+ "pt-login-button": "Asup log",
+ "pt-createaccount": "Jieun akun",
+ "pt-userlogout": "Kaluar log",
"php-mail-error-unknown": "Kasalahan nu teu kanyahoan dina fungsi PHP surélék().",
"user-mail-no-addy": "Nyobaan ngirim surélék tanpa alamat.",
"changepassword": "Robah sandi",
"changeemail-oldemail": "Alamat surélék ayeuna:",
"changeemail-newemail": "Alamat surélék anyar:",
"changeemail-none": "(euweuh)",
+ "changeemail-password": "Kecap sandi {{SITENAME}} Anjeun:",
"changeemail-submit": "Ganti surélék",
"changeemail-cancel": "Bolay",
+ "resettokens-tokens": "Token:",
"bold_sample": "Téks kandel",
"bold_tip": "Téks kandel",
"italic_sample": "Tulisan déngdék",
"token_suffix_mismatch": "'''Éditan anjeun ditolak sabab aplikasi klien Anjeun ngarobah karakter tanda baca dina éditan. Éditan kasebut ditolak keur nyegah kasalahan dina artikel téks. Hal ieu kadang-kadang kajadian lamun Anjeun maké proksi anonim basis web nu masalah.'''",
"edit_form_incomplete": "'''Sawatara bagian tina wangun éditan teu nepi ka sérver; pariksa deui naha éditan Anjeun tetep gembleng sarta cobaan deui.'''",
"editing": "Ngédit $1",
+ "creating": "Nyieun $1",
"editingsection": "Ngédit $1 (bagian)",
"editingcomment": "Ngédit $1 (bagian anyar)",
"editconflict": "Konflik éditan: $1",
"edit-gone-missing": "Kaca teu bisa dianyarkeun,\nsigana kusabab geus dihapus.",
"edit-conflict": "Éditan bantrok",
"edit-no-change": "Éditan anjeun teu diwaro, kusabab taya nu robah dina tulisanana.",
+ "postedit-confirmation-saved": "Éditan anjeun tos disimpen.",
"edit-already-exists": "Teu bisa nyieun kaca anyar.\nArtikelna geus aya.",
+ "defaultmessagetext": "Téks ti dituna",
+ "invalid-content-data": "Data eusi henteu valid",
+ "content-not-allowed-here": "Eusi \"$1\" teu diijinan di kaca [[$2]]",
+ "content-model-wikitext": "wikitéks",
+ "content-model-text": "téks polos",
+ "content-model-javascript": "JavaScript",
+ "content-model-css": "CSS",
"expensive-parserfunction-warning": "Inget!: Kaca ieu ngandung réa teuing maké fungsi ''parser''.\n\nAyeuna aya {{PLURAL:$1|$1 panggilan|$1 panggilan}}, sakuduna kurang ti $2 {{PLURAL:$2|panggilan|panggilan}}.",
"expensive-parserfunction-category": "Kaca kalawan réa teuing maké fungsi parser",
"post-expand-template-inclusion-warning": "Inget! : Ukuran citakan anu dipaké badag teuing.\nSawatara citakan baris teu diasupkeun.",
"histlegend": "Pilihan béda: tandaan wadah buleud vérsina pikeun ngabandingkeun sarta pencét énter atawa tombol di handap.<br />\nKaterangan: (kiw) = bédana jeung vérsi kiwari,\n(ahir) = bédana jeung vérsi nu harita, m = éditan minor.",
"history-fieldset-title": "Sungsi jujutan",
"history-show-deleted": "Ukur nu dihapus",
- "histfirst": "Pangheubeulna",
- "histlast": "Pangahirna",
+ "histfirst": "pangheubeulna",
+ "histlast": "panganyarna",
"historysize": "($1 {{PLURAL:$1|bit|bit}})",
"historyempty": "(kosong)",
"history-feed-title": "Sajarah révisi",
"revdelete-confirm": "Mangga geura konfirmasi yen Anjeun gaduh maksad pikeun ngalakukeun hal ieu, paham kana konsekwensina, tur nu dilakukeun ieu teh luyu sareng [[{{MediaWiki:Policy-url}}|kawijakanana]]",
"revdelete-suppress-text": "Nyumputkeun revisi '''ukur''' bisa digunakeun keur kasus-kasus di handap ieu:\n* Informasi nu boga potensi mitenah\n* Informasi pribadi nu teu pantes\n*: ''alamat imah katut nomer telepon, nomer kartu identitas, jeung lian-liana.''",
"revdelete-legend": "Setél réstriksi révisi:",
- "revdelete-hide-text": "Sumputkeun téks révisi",
+ "revdelete-hide-text": "Téks révisi",
"revdelete-hide-image": "Sumputkeun eusi gambar",
"revdelete-hide-name": "Sumputkeun lampah sarta udagan",
"revdelete-hide-comment": "Sumputkeun koméntar ngédit",
"revdelete-hide-user": "Sumputkeun ngaran pamaké/IP éditor",
"revdelete-hide-restricted": "Sumputkeun data boh ti kuncén atawa nu séjénna",
"revdelete-radio-same": "(ulah dirobah)",
- "revdelete-radio-set": "Enya",
- "revdelete-radio-unset": "Ulah",
+ "revdelete-radio-set": "Nyumput",
+ "revdelete-radio-unset": "Némbongan",
"revdelete-suppress": "Sumputkeun ogé ti kuncén",
"revdelete-unsuppress": "Hapus watesan kana révisi anu geus dipulangkeun",
"revdelete-log": "Alesan:",
"revdelete-submit": "Larapkeun kana {{PLURAL:$1|révisi|révisi}} nu dipilih",
- "revdelete-success": "Pangaturan nyumpukeun révisi junun dilarapkeun.",
+ "revdelete-success": "<strong>Visibilitas révisi geus dimutahirkeun.</strong>",
"revdelete-failure": "'''Visibilitas révisi teu bisa diapdét:'''\n$1",
"logdelete-success": "Log pangatur nyumputkeun junun dilarapkeun.",
"logdelete-failure": "'''Visibilitas log teu bisa disét:'''\n$1",
"search-section": "(bagean $1)",
"search-suggest": "Meureun maksud Anjeun nyaéta: $1",
"search-interwiki-caption": "Proyék sawargi",
- "search-interwiki-default": "$1 hasil:",
+ "search-interwiki-default": "Hasil ti $1:",
"search-interwiki-more": "(saterusna)",
"search-relatedarticle": "Patula-patali",
"searchrelated": "patula-patali",
"searchall": "sadayana",
"showingresults": "Di handap ieu némbongkeun {{PLURAL:$1|'''1''' hasil|'''$1''' hasil}}, dimimitianku #'''$2'''.",
- "showingresultsheader": "{{PLURAL:$5|Hasil '''$1''' ti '''$3'''|Hasil '''$1 - $2''' ti '''$3'''}} pikeun '''$4'''",
"search-nonefound": "Euweuh hasil nu cocog jeung kueri.",
"powersearch-legend": "Panéangan tuluy",
"powersearch-ns": "Téangan di ngaranspasi:",
"skin-preview": "Pramidang",
"datedefault": "Tanpa préferénsi",
"prefs-labs": "Fitur Labs",
+ "prefs-user-pages": "Kaca pamaké",
"prefs-personal": "Data pamaké",
"prefs-rc": "Panémbong robahan anyar jeung tukung",
"prefs-watchlist": "Awaskeuneun",
"timezoneregion-indian": "Samudra Indonésia",
"timezoneregion-pacific": "Samudra Pasifik",
"allowemail": "Buka koropak pikeun nampa surélék ti nu séjén",
- "prefs-searchoptions": "Piliheun Panéangan",
+ "prefs-searchoptions": "Paluruh",
"prefs-namespaces": "Ngaranspasi",
"default": "ti dituna",
"prefs-files": "Koropak",
"prefs-reset-intro": "Anjeun bisa maké ieu kaca pikeun mulangkeun préferénsi anjeun ka nu baku.\nMun geus anggeus teu bisa dibolaykeun.",
"prefs-emailconfirm-label": "Konfirmasi surélék:",
"youremail": "Surélék:",
- "username": "Landihan:",
- "prefs-memberingroups": "Anggota {{PLURAL:$1|jumplukan|jumplukan}}:",
+ "username": "{{GENDER:$1|Sandiasma}}:",
+ "prefs-memberingroups": "{{GENDER:$2|Anggota}} {{PLURAL:$1|kelompok|kelompok}}:",
"prefs-registration": "Waktu daptar:",
"yourrealname": "Ngaran anjeun*",
"yourlanguage": "Basa antarbeungeut",
"badsig": "Parafna teu valid; pariksa tag HTML-na geura.",
"badsiglength": "Tawis leungeun panjang teuing. Kuduna kurang ti $1 {{PLURAL:$1|karaktér|karaktér}}.",
"yourgender": "Jenis kelamin:",
- "gender-unknown": "Teu nyebutkeun",
- "gender-male": "Lalaki",
- "gender-female": "Awéwé",
+ "gender-unknown": "Moal béja-béja",
+ "gender-male": "Manéhna ngédit kaca wiki",
+ "gender-female": "Manéhna ngédit kaca wiki",
"email": "Surélék",
"prefs-help-realname": "* Ngaran asli (pilihan): mun anjeun milih ngeusian, bakal dipaké pikeun nandaan kontribusi anjeun.",
"prefs-help-email": "Surélék sipatna pilihan, tapi diperlukeun pikeun nyetél ulang sandi lamun anjeun poho.",
"prefs-signature": "Tandatangan",
"prefs-dateformat": "Format titimangsa",
"prefs-timeoffset": "Format waktu",
- "prefs-advancedediting": "Pilihan lengkep",
+ "prefs-advancedediting": "Pilihan umum",
+ "prefs-editor": "Éditor",
+ "prefs-preview": "Pratayang",
"prefs-advancedrc": "Pilihan lengkep",
"prefs-advancedrendering": "Pilihan lengkep",
"prefs-advancedsearchoptions": "Pilihan lengkep",
"prefs-advancedwatchlist": "Pilihan lengkep",
"prefs-displayrc": "Pilihan pidangan",
"prefs-displaywatchlist": "Pilihan pidangan",
+ "prefs-tokenwatchlist": "Token",
"prefs-diffs": "Béda",
"email-address-validity-valid": "Alamat surélék sigana bener",
"email-address-validity-invalid": "Asupkeun alamat ratron nu bener",
"right-move": "Mindahkeun kaca",
"right-move-subpages": "Pindahkeun kaca katut sakabéh subkacana",
"right-move-rootuserpages": "Mindahkeun akar kaca kontributor",
+ "right-move-categorypages": "Pindahkeun kaca kategori",
"right-movefile": "Mindahkeun berkas",
"right-suppressredirect": "Henteu nyieun hiji alihan ti ngaran lila sabot mindahkeun kaca",
"right-upload": "Muatkeun koropak",
"right-browsearchive": "Sungsi kaca nu geus dihapus",
"right-undelete": "Balikeun deui kaca",
"right-suppressrevision": "Mariksa jeung mulangkeun révisi anu disumputkeun ti kuncén",
+ "right-viewsuppressed": "Témbongkeun révisi anu disumputkeun ti pamaké lianna",
"right-suppressionlog": "Nempo log privat",
"right-block": "Peungpeuk pamaké lain tina ngédit",
"right-blockemail": "Halangan pamaké keur ngirim Surélék",
"right-hideuser": "Peungpeuk pamaké, tong ditingalikeun ka nulain",
"right-ipblock-exempt": "Narabas peungpeuk IP, peungpeuk-otomatis, jeung peungpeuk rentang",
"right-proxyunbannable": "Abaikeun pengpeuk otomatis keur proxy",
- "right-unblockself": "Muka peungpeuk ka dirina sorangan",
- "right-protect": "Ngarobah hambalan konci jeung ngédit kaca anu dikonci",
- "right-editprotected": "Ngédit kaca anu dikonci (tanpa ngarobah protéksi)",
+ "right-unblockself": "buka peungpeuk sorangan",
+ "right-protect": "Ngarobah hambalan protéksi jeung édit kaca anu dikonci",
+ "right-editprotected": "Edit kaca anu dikonci salaku \"{{int:protect-level-sysop}}\"",
"right-editinterface": "Édit antarbenget pamaké",
"right-editusercssjs": "Édit berkas CSS jeung JS pamaké séjén",
"right-editusercss": "Édit berkas CSS pamaké séjén",
"right-edituserjs": "Ngédit berkas JS pamaké séjén",
+ "right-viewmywatchlist": "Tempo awaskeuneun anjeun",
+ "right-viewmyprivateinfo": "Tempo data pribadi anjeun (alamat surélék, ngaran asli)",
+ "right-editmyprivateinfo": "Robah data pribadi anjeun (alamat surélék, ngaran asli)",
+ "right-editmyoptions": "Robah préferénsi anjeun",
"right-import": "Ngimpor kaca ti wiki séjén",
"right-importupload": "Ngimpor kaca tina hiji koropak nu dimuat",
"right-patrol": "Nandaan éditan pamaké séjén minangka geus dipatroli",
"action-createpage": "mitembeyan kaca anyar",
"action-createtalk": "mitembeyan kaca obrolan",
"action-createaccount": "nyieun rekening pamaké ieu",
+ "action-history": "tempo jujutan ieu kaca",
"action-minoredit": "nandaan ieu éditan salaku minor",
"action-move": "mindahkeun ieu kaca",
"action-move-subpages": "mindahkeun ieu kaca katut bagian-bagianana",
"action-move-rootuserpages": "mindahkeun kaca utama kontributor",
+ "action-move-categorypages": "pindahkeun kaca kategori",
"action-movefile": "mindahkeun ieu berkas",
"action-upload": "ngamuat ieu berkas",
"action-reupload": "nimpah berkas nu geus aya ieu",
"action-suppressionlog": "nempo ieu log pribadi",
"action-block": "meungpeuk ieu pamaké tina ngédit",
"action-protect": "ngarobah hambalan konci ieu kaca",
- "action-import": "impor ieu kaca ti séjén wiki",
+ "action-import": "impor kaca ti wiki séjén",
"action-patrol": "Nandaan éditan séjén minangka geus diroris",
"action-autopatrol": "tandaan éditan anjeun salaku geus diroris",
"action-unwatchedpages": "témbongkeun béréndélan kaca nu teu diawaskeun",
"action-userrights-interwiki": "ngarobah hak pamaké di wiki lianna",
"action-siteadmin": "ngonci atawa muka konci databés",
"action-sendemail": "ngirim surélék",
+ "action-editmywatchlist": "robah awaskeuneun anjeun",
+ "action-viewmyprivateinfo": "tempo émbaran pribadi anjeun",
+ "action-editmyprivateinfo": "robah émbaran pribadi anjeun",
"nchanges": "$1 {{PLURAL:$1|parobahan|parobahan}}",
+ "enhancedrc-history": "jujutan",
"recentchanges": "Anyar robah",
"recentchanges-legend": "Pilihan parobahan anyar",
"recentchanges-summary": "Lacak parobahan ka wiki panganyarna na kaca ieu.",
"recentchanges-label-minor": "Ieu éditan minor",
"recentchanges-label-bot": "Ieu parobahan dijieun ku bot",
"recentchanges-label-unpatrolled": "Ieu éditan can karoris",
+ "recentchanges-legend-heading": "'''Pedaran:'''",
"recentchanges-legend-newpage": "$1 - kaca anyar",
"rcnotefrom": "Di handap ieu parobahan saprak <b>$2</b> (nu ditémbongkeun nepi ka <b>$1</b>).",
"rclistfrom": "Témbongkeun nu anyar robah nepi ka $3 $2",
"rcshowhideminor": "$1 éditan minor",
+ "rcshowhideminor-show": "Témbongkeun",
+ "rcshowhideminor-hide": "Sumputkeun",
"rcshowhidebots": "$1 bot",
- "rcshowhideliu": "$1 kontributor nu asup log",
+ "rcshowhidebots-show": "Témbongkeun",
+ "rcshowhidebots-hide": "Sumputkeun",
+ "rcshowhideliu": "$1 pamaké kadaptar",
+ "rcshowhideliu-show": "Témbongkeun",
+ "rcshowhideliu-hide": "Sumputkeun",
"rcshowhideanons": "$1 kontributor anonim",
+ "rcshowhideanons-show": "Témbongkeun",
+ "rcshowhideanons-hide": "Sumputkeun",
"rcshowhidepatr": "$1 éditan karoris",
+ "rcshowhidepatr-show": "Témbongkeun",
+ "rcshowhidepatr-hide": "Sumputkeun",
"rcshowhidemine": "$1 éditan kuring",
+ "rcshowhidemine-show": "Témbongkeun",
+ "rcshowhidemine-hide": "Sumputkeun",
"rclinks": "Témbongkeun $1 parobahan ahir dina $2 poé ahir<br />$3",
"diff": "béda",
"hist": "juj",
"newsectionsummary": "/* $1 */ bagean anyar",
"rc-enhanced-expand": "Témbongkeun rincian (butuh JavaScript)",
"rc-enhanced-hide": "Sumputkeun rincian",
+ "rc-old-title": "Mimitina dijieun salaku \"$1\"",
"recentchangeslinked": "Parobahan nu patali",
"recentchangeslinked-feed": "Parobahan nu patali",
"recentchangeslinked-toolbox": "Parobahan nu patali",
"uploadbtn": "Muatkeun koropak",
"reuploaddesc": "Balik ka formulir muatan.",
"uploadnologin": "Can asup log",
- "uploadnologintext": "Anjeun kudu [[Special:UserLogin|asup log]] pikeun ngamuat koropak.",
+ "uploadnologintext": "Mangga $1 pikeun ngunggah berkas.",
"upload_directory_read_only": "Diréktori muatan ($1) teu bisa ditulis ku server ramat.",
"uploaderror": "Kasalahan muat",
"upload-recreate-warning": "'''Awas: berkas nu ngaranna kitu geus kungsi dihapus atawa dipindahkeun.'''\n\nLog hahapus jeung pipindah pikeun ieu kaca dipidangkeun di handap:",
"uploadwarning-text": "Ropéa pedaran berkas di handap terus cobaan deui.",
"savefile": "Simpen koropak",
"uploaddisabled": "Punten, ngamuat ayeuna ditumpurkeun.",
+ "copyuploaddisabled": "Unggahan dumasar URL ditumpurkeun.",
"uploaddisabledtext": "Fungsi ngamuat koropak ditumpurkeun.",
"uploadscripted": "Koropak ieu ngandung kode HTML atawa skrip nu bisa dibaca ngaco ku panyungsi ramat (''web browser'').",
"uploadvirus": "Koropakna ngandung virus! Katrangan: $1",
"lockmanager-fail-db-release": "Teu bisa ngaleupaskeun konci dina databés $1.",
"lockmanager-fail-svr-release": "Teu bisa ngaleupaskeun konci dina server $1.",
"zip-wrong-format": "Berkas anu dipilih lain berkas ZIP.",
+ "img-auth-accessdenied": "Aksés ditolak",
"img-auth-nofile": "Berkas \"$1\" henteu aya.",
"img-auth-noread": "Pamaké teu boga kawenangan maca \"$1\".",
"http-invalid-url": "URL teu bener: $1",
"license": "Lisénsi:",
"license-header": "Lisénsi",
"nolicense": "Taya nu dipilih",
+ "licenses-edit": "Robah pilihan lisénsi",
"license-nopreview": "(euweuh pramidang)",
"upload_source_url": "(URL nu sohéh sarta bisa dibuka ku umum)",
"upload_source_file": " (koropak dina komputer salira)",
+ "listfiles-delete": "hapus",
+ "listfiles-summary": "Ieu kaca husus némbongkeun sakabéh berkas anu geus diunggah.",
"listfiles_search_for": "Sungsi ngaran média:",
"imgfile": "koropak",
"listfiles": "Daptar gambar",
"listfiles_size": "Badagna",
"listfiles_description": "Pedaran",
"listfiles_count": "Vérsi",
+ "listfiles-latestversion": "Vérsi ayeuna",
+ "listfiles-latestversion-yes": "Enya",
+ "listfiles-latestversion-no": "Henteu",
"file-anchor-link": "Gambar",
"filehist": "Sajarah gambar",
"filehist-help": "Klik dina titimangsa pikeun nempo koropak nu aya dina mangsa éta.",
"filedelete-reason-otherlist": "Alesan séjén",
"filedelete-reason-dropdown": "*Alesan nu ilahar\n** Ngarumpak hak cipta\n** Koropak geus aya",
"filedelete-edit-reasonlist": "Alesan ngahapus éditan",
+ "filedelete-maintenance-title": "Henteu bisa ngahapus berkas",
"mimesearch": "Sungsi MIME",
"mimesearch-summary": "Ieu kaca bisa dipaké nyaring koropak dumasar tipeu MIME-na. Asupan: contenttype/subtype, contona <code>image/jpeg</code>.",
"mimetype": "Tipeu MIME:",
"unusedtemplateswlh": "tumbu lianna",
"randompage": "Kaca acak",
"randompage-nopages": "Euweuh kaca dina ieu spasi ngaran \"$1\".",
+ "randomincategory-category": "Kategori:",
"randomredirect": "Alihan acak",
"randomredirect-nopages": "Euweuh alihan dina ieu spasi ngaran \"$1\".",
"statistics": "Statistik",
"statistics-users-active": "Pamaké getol",
"statistics-users-active-desc": "Kontributor nu ngoprék salila {{PLURAL:$1|poé|$1 poé}} panungtung",
"statistics-mostpopular": "Kaca nu pangmindengna dibuka",
+ "pageswithprop-submit": "Jung",
"doubleredirects": "Alihan ganda",
"doubleredirectstext": "Ieu kaca ngabéréndélkeun kaca-kaca alihan ka kaca alihan lianna. Unggal baris ngandung tutumbu ka alihan kahiji jeung kadua, ogé tujul alihan kadua anu biasana tujul kaca anu \"bener\", anu sakuduna dituju ku alihan kahiji. Ëntri nu <del>dicorét</del> geus diropéa.",
"double-redirect-fixed-move": "[[$1]] geus pindah, dialihkeun ka [[$2]].",
"fewestrevisions": "Artikel nu pangjarangna dirévisi",
"nbytes": "$1 {{PLURAL:$1|bait|bait}}",
"ncategories": "$1 {{PLURAL:$1|kategori|kategori}}",
+ "ninterwikis": "$1 {{PLURAL:$1|interwiki|interwiki}}",
"nlinks": "$1 {{PLURAL:$1|tumbu|tumbu}}",
"nmembers": "$1 {{PLURAL:$1|kontributor|kontributor}}",
+ "nmemberschanged": "$1 → $2 {{PLURAL:$2|anggota|anggota}}",
"nrevisions": "$1 {{PLURAL:$1|révisi|révisi}}",
"nviews": "$1 {{PLURAL:$1|témbongan|témbongan}}",
"nimagelinks": "Dipaké di $1 {{PLURAL:$1|kaca|kaca}}",
"protectedpages": "Kaca-kaca nu dikonci",
"protectedpages-indef": "Ngan pikeun panangtayungan kalawan waktu nuteu kawates",
"protectedpagesempty": "Dina danget ieu, teu aya kaca nu dikonci dumasar kana ieu paraméter.",
+ "protectedpages-timestamp": "Cap titimangsa",
+ "protectedpages-page": "Kaca",
+ "protectedpages-expiry": "Kadaluwarsa",
+ "protectedpages-params": "Paraméter protéksi",
+ "protectedpages-reason": "Alesan",
+ "protectedpages-unknown-timestamp": "Teu kanyahoan",
+ "protectedpages-unknown-performer": "Pamaké henteu dipikawanoh",
"protectedtitles": "Judul nu dikonci",
"protectedtitlesempty": "Dina danget ieu, euweuh judul nu keur dikonci tina paraméter-paraméter éta.",
"listusers": "Daptar pamaké",
"booksources-text": "Di handap ieu ngabéréndélkeun tumbu ka loka-loka nu ngical buku, boh nu anyar atawa loakan, nu sugan uninga kana buku anu nuju dipilari:",
"booksources-invalid-isbn": "ISBN-na sigana henteu bener; pariksa deui bisi aya salah salin ti sumber aslina.",
"specialloguserlabel": "Pamaké:",
- "speciallogtitlelabel": "Judul:",
+ "speciallogtitlelabel": "Sasaran (judul atawa pamaké):",
"log": "Log",
"all-logs-page": "Sakabéh log umum",
"alllogstext": "Béréndélan sakabéh log nu aya di {{SITENAME}}.\nBisa dipondokkeun ku cara milih tipe log, ngaran pamaké, atawa kaca nu dimaksud.",
"emailuser": "Surélékan pamaké ieu",
"emailpage": "Surélékan pamaké",
"emailpagetext": "Anjeun bisa maké formulir di handap pikeun ngirim surélék ka ieu pamaké.\nAlamat surélék nu diasupkeun kana [[Special:Preferences|préferénsi pamaké anjeun]] bakal katémbong salaku alamat \"Ti\" dina surélékna, sahingga nu dituju bisa males langsung.",
- "defemailsubject": "Surélék {{SITENAME}}",
+ "defemailsubject": "Surélék {{SITENAME}} ti pamaké \"$1\"",
"usermaildisabled": "Surélék kontributor ditumpurkeun",
"usermaildisabledtext": "Anjeun teu bisa ngirim surélék ka kontributor séjén di ieu wiki",
"noemailtitle": "Teu aya alamat surélék",
"noemailtext": "Ieu pamaké ieu teu méré alamat surélék nu sah.",
"nowikiemailtext": "Ieu kontributor milih teu nampa surélék ti kontributor séjén.",
+ "emailnotarget": "Sandiasma panarima henteu valid atawa henteu aya.",
+ "emailtarget": "ASupkeun sandiasma panarima",
"emailusername": "Sandiasma:",
"emailusernamesubmit": "Kirim",
"email-legend": "Kirim surélék ka kontributor {{SITENAME}} lianna",
"emailsent": "Surélék geus dikirim",
"emailsenttext": "Surélék anjeun geus dikirim.",
"emailuserfooter": "Ieu surélék dikirim ku $1 ka $2 migunakeun fungsi \"Surélékan pamaké ieu\" di {{SITENAME}}.",
+ "usermessage-summary": "Ninggalkeun talatah sistem.",
"watchlist": "Awaskeuneun",
"mywatchlist": "Awaskeuneun",
"watchlistfor2": "Pikeun $1 $2",
"nowatchlist": "Anjeun teu boga awaskeuneun.",
- "watchlistanontext": "Mangga $1 pikeun némbongkeun atawa ngarobah béréndélan awaskeuneun anjeun.",
+ "watchlistanontext": "Mangga asup log pikeun nempo atawa ngarobah béréndélan awaskeuneun anjeun.",
"watchnologin": "Can asup log",
"addedwatchtext": "Kaca \"[[:$1]]\" geus ditambahkeun ka [[Special:Watchlist|awaskeuneun]] anjeun.\nJaga, parobahan na kaca ieu katut kaca obrolanana bakal dibéréndélkeun di dinya, sarta kacana bakal katémbong '''dikandelan''' dina kaca [[Special:RecentChanges|Nu anyar robah]] sangkan leuwih gampang ngawaskeunana.\n\n<p>Mun jaga anjeun moal deui ngawaskeun parobahan na kaca éta, klik tumbu \"Eureun ngawaskeun\" na lajursisi.",
+ "removewatch": "Piceun tina béréndélan awaskeuneun",
"removedwatchtext": "Kaca \"[[:$1]]\" geus dikaluarkeun tina [[Special:Watchlist|daptar awaskeuneun]] anjeun.",
+ "removedwatchtext-short": "Kaca \"$1\" geus dipiceun tina béréndélan awaskeuneun.",
"watch": "awaskeun",
"watchthispage": "Awaskeun kaca ieu",
"unwatch": "Eureun ngawaskeun",
"unwatchthispage": "Eureun ngawaskeun",
"notanarticle": "Sanés kaca eusi",
"notvisiblerev": "Révisi geus dihapus",
- "watchlist-details": "Aya {{PLURAL:$1|$1 kaca|$1 kaca}} nu ku anjeun diawaskeun, teu kaasup kaca obrolan/sawala.",
+ "watchlist-details": "Aya {{PLURAL:$1|$1 kaca|$1 kaca}} dina béréndélan awaskeuneun, teu kaasup kaca obrolan/sawala.",
"wlheader-enotif": "Pangémbar surélék difungsikeun.",
"wlheader-showupdated": "Kaca nu robah ti panungtungan anjeun sindang ditémbongkeun kalawan '''kandel'''",
"wlnote": "Di handap ieu mangrupa $1 {{PLURAL:$1|robahan|robahan}} ahir salila '''$2''' jam.",
"unwatching": "Eureun ngawaskeun...",
"enotif_reset": "Tandaan sadaya kaca nu geus dilongok",
"enotif_impersonal_salutation": "Pamaké {{SITENAME}}",
+ "enotif_subject_deleted": "Kaca {{SITENAME}} $1 geus {{GENDER:$2|dihapus}} ku $2",
"enotif_lastvisited": "Tempo $1 pikeun sadaya parobahan ti saprak anjeun ninggalkeun ieu kaca.",
"enotif_lastdiff": "Buka $1 pikeun nempo ieu parobahan.",
"enotif_anon_editor": "pamaké anonim $1",
"protect-level-sysop": "Ngan bisa ku kuncén",
"protect-summary-cascade": "ngaruntuykeun",
"protect-expiring": "kadaluwarsa $1",
+ "protect-expiring-local": "kadaluwarsa $1",
"protect-expiry-indefinite": "tanpa wates",
"protect-cascade": "Konci kaca nu kawengku dina ieu kaca (pangonci ngaruntuy).",
"protect-cantedit": "Anjeung teu wenang ngarobah hambalan ngonci ieu kaca.",
"protect-othertime": "Séjén waktu",
+ "protect-othertime-op": "séjén waktu",
"protect-existing-expiry": "Waktu mungkas nu aya: $3, $2",
+ "protect-existing-expiry-infinity": "Waktu kadaluwarsa nu aya: taya wates",
"protect-otherreason": "Alesan panambah/lianna:",
"protect-otherreason-op": "Alesan séjén",
"protect-dropdown": "*Alesan ngonci nu ilahar\n** Vandalismeu kamalinaan\n** Spamming kamalinaan\n** Perang éditan\n** Kaca loba pisan diédit",
"contributions": "Kontribusi ti kontributor",
"contributions-title": "Sumbangan tulisan ti $1",
"mycontris": "Kontribusi",
- "contribsub2": "Pikeun $1 ($2)",
+ "contribsub2": "Pikeun {{GENDER:$3|$1}} ($2)",
+ "contributions-userdoesnotexist": "Akun pamaké \"$1\" teu aya dina daptar.",
"nocontribs": "Taya robahan nu kapanggih cocog jeung patokan ieu.",
- "uctop": "(pangluhurna)",
+ "uctop": "(ayeuna)",
"month": "Ti bulan (jeung saméméhna):",
"year": "Ti taun (jeung saméméhna):",
"sp-contributions-newbies": "Témbongkeun kontribusi ti akun anyar wungkul",
"unblocklink": "buka blokir",
"change-blocklink": "Robah status blokir",
"contribslink": "kontribusi",
+ "emaillink": "kirim surélék",
"autoblocker": "Otomatis dipeungpeuk kusabab alamat IP anjeun dipaké ku \"[[User:$1|$1]]\".\nAlesan: \"$2\"",
"blocklogpage": "Log_peungpeuk",
"blocklog-showlog": "Ieu pamaké saméméhna geus kungsi dipeungpeuk.\nPikeun rujukan, logna dipidangkeun di handap ieu:",
"import": "Impor kaca",
"importinterwiki": "Impor transwiki",
"import-interwiki-text": "Pilih wiki jeung judul kaca nu rék diimpor.\nTanggal révisi katut ngaran nu ngédit bakal dipertahankeun.\nSadaya aktivitas impor transwiki baris kacatet dina [[Special:Log/import|log impor]].",
- "import-interwiki-source": "Wiki/kaca sumber:",
+ "import-interwiki-sourcewiki": "Wiki sumber:",
+ "import-interwiki-sourcepage": "Kaca sumber:",
"import-interwiki-history": "Salin sakabéh vérsi jujutan pikeun ieu kaca",
"import-interwiki-templates": "Kaasup sakabéh citakan",
"import-interwiki-submit": "Impor",
"import-logentry-upload-detail": "$1 {{PLURAL:$1|vérsi heubeul}}",
"import-logentry-interwiki": "$1 geus ditranswikikeun",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|vérsi heubel}} ti $2",
+ "javascripttest": "Nguji JavaScript",
"tooltip-pt-userpage": "Kaca kontributor Anjeun",
"tooltip-pt-anonuserpage": "Kaca pamaké pikeun IP nu ku anjeun keur diédit",
"tooltip-pt-mytalk": "Kaca obrolan Anjeun",
"spamprotectiontitle": "Saringan spam",
"spamprotectiontext": "Kaca nu rék disimpen dipeungpeuk ku saringan spam.\nSigana mah ieu téh alatan tumbu ka loka luar.",
"pageinfo-title": "Émbaran pikeun \"$1\"",
- "pageinfo-header-edits": "Éditan",
+ "pageinfo-header-basic": "Émbaran dasar",
+ "pageinfo-header-edits": "Jujutan édit",
+ "pageinfo-header-restrictions": "Protéksi kaca",
"pageinfo-watchers": "Jumlah nu ngawaskeun",
"pageinfo-edits": "Jumlah éditan",
"pageinfo-authors": "Jumlah kontributor nu béda",
+ "pageinfo-contentpage-yes": "Enya",
+ "pageinfo-protect-cascading-yes": "Enya",
"markaspatrolleddiff": "Tandaan salaku geus diriksa",
"markaspatrolledtext": "Tandaan artikel ieu salaku geus diriksa",
"markedaspatrolled": "Tandaan salaku geus diriksa",
"protect-othertime": "其它时间:",
"protect-othertime-op": "其它时间",
"protect-existing-expiry": "现有的终止时间:$2 $3",
+ "protect-existing-expiry-infinity": "当前到期时间:无限期",
"protect-otherreason": "其他/附加原因:",
"protect-otherreason-op": "其他原因",
"protect-dropdown": "*常见保护原因\n** 过度破坏\n** 过多垃圾信息\n** 负面的编辑战\n** 高流量页面",
'mediawiki.page.ready' => array(
'scripts' => 'resources/src/mediawiki.page/mediawiki.page.ready.js',
'dependencies' => array(
+ 'jquery.accessKeyLabel',
'jquery.checkboxShiftClick',
'jquery.makeCollapsible',
'jquery.placeholder',
'jquery.mw-jump',
- 'mediawiki.util',
),
'targets' => array( 'desktop', 'mobile' ),
),
/* MediaWiki UI */
'mediawiki.ui' => array(
- 'styles' => array(
- 'resources/src/mediawiki.ui/default.less',
+ 'skinStyles' => array(
+ 'default' => array(
+ 'resources/src/mediawiki.ui/default.less',
+ ),
),
'position' => 'top',
'targets' => array( 'desktop', 'mobile' ),
),
'mediawiki.ui.checkbox' => array(
- 'styles' => array(
- 'resources/src/mediawiki.ui/components/checkbox.less',
+ 'skinStyles' => array(
+ 'default' => array(
+ 'resources/src/mediawiki.ui/components/checkbox.less',
+ ),
),
'position' => 'top',
'targets' => array( 'desktop', 'mobile' ),
),
// Lightweight module for anchor styles
'mediawiki.ui.anchor' => array(
- 'styles' => array(
- 'resources/src/mediawiki.ui/components/anchors.less',
+ 'skinStyles' => array(
+ 'default' => array(
+ 'resources/src/mediawiki.ui/components/anchors.less',
+ ),
),
'position' => 'top',
'targets' => array( 'desktop', 'mobile' ),
),
// Lightweight module for button styles
'mediawiki.ui.button' => array(
- 'styles' => array(
- 'resources/src/mediawiki.ui/components/buttons.less',
+ 'skinStyles' => array(
+ 'default' => array(
+ 'resources/src/mediawiki.ui/components/buttons.less',
+ ),
),
'position' => 'top',
'targets' => array( 'desktop', 'mobile' ),
),
'mediawiki.ui.input' => array(
- 'styles' => array(
- 'resources/src/mediawiki.ui/components/inputs.less',
+ 'skinStyles' => array(
+ 'default' => array(
+ 'resources/src/mediawiki.ui/components/inputs.less',
+ ),
),
'position' => 'top',
'targets' => array( 'desktop', 'mobile' ),
/*!
- * OOjs UI v0.1.0-pre (ec785c2c64)
+ * OOjs UI v0.1.0-pre (f2c3f12959)
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011–2014 OOjs Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2014-09-18T01:30:17Z
+ * Date: 2014-09-18T23:22:20Z
*/
/*
* Blank theme mixins.
*/
/* @noflip */
.oo-ui-rtl {
- direction: rtl;
+ direction: rtl;
}
/* @noflip */
.oo-ui-ltr {
- direction: ltr;
+ direction: ltr;
}
.oo-ui-buttonElement > .oo-ui-buttonElement-button {
- cursor: pointer;
- display: inline-block;
- vertical-align: middle;
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
+ cursor: pointer;
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
}
.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
- display: none;
+ display: none;
}
.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
- display: none;
+ display: none;
}
.oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
- cursor: default;
+ cursor: default;
}
.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
- display: inline-block;
- vertical-align: middle;
- background-position: center center;
- background-repeat: no-repeat;
+ display: inline-block;
+ vertical-align: middle;
+ background-position: center center;
+ background-repeat: no-repeat;
}
.oo-ui-buttonElement-frameless {
- display: inline-block;
- position: relative;
+ display: inline-block;
+ position: relative;
}
.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
- display: inline-block;
- vertical-align: middle;
+ display: inline-block;
+ vertical-align: middle;
}
.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
- display: inline-block;
- vertical-align: top;
- text-align: center;
+ display: inline-block;
+ vertical-align: top;
+ text-align: center;
}
.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
- display: inline-block;
- vertical-align: middle;
+ display: inline-block;
+ vertical-align: middle;
}
.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button,
.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
- cursor: default;
+ cursor: default;
}
.oo-ui-buttonElement > .oo-ui-buttonElement-button {
- color: #333;
+ color: #333333;
}
.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
- margin-left: 0;
+ margin-left: 0;
}
.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
- margin-right: -0.75em;
+ margin-right: -0.75em;
}
.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
- opacity: 0.8;
- width: 1.9em;
- height: 1.9em;
+ opacity: 0.8;
+ width: 1.9em;
+ height: 1.9em;
}
.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
- /* Don't animate opacities for now, causes wiggling in Chrome (bug 63020) */
- /*.oo-ui-transition(opacity 200ms);*/
+ /* Don't animate opacities for now, causes wiggling in Chrome (bug 63020) */
+ /*.oo-ui-transition(opacity 200ms);*/
}
.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:hover > .oo-ui-iconElement-icon,
.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:focus > .oo-ui-iconElement-icon {
- opacity: 1;
+ opacity: 1;
}
.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:hover > .oo-ui-labelElement-label,
.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:focus > .oo-ui-labelElement-label {
- color: #000;
+ color: #000000;
}
.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
- color: #333;
- margin-left: 0.25em;
+ color: #333333;
+ margin-left: 0.25em;
}
.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
- color: #087ecc;
+ color: #087ecc;
}
.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
- color: #76ab36;
+ color: #76ab36;
}
.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
- color: #d45353;
+ color: #d45353;
}
.oo-ui-buttonElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
- opacity: 0.2;
+ opacity: 0.2;
}
.oo-ui-buttonElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
- color: #ccc;
+ color: #cccccc;
}
.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
- margin: 0.1em 0;
- padding: 0.2em 0.8em;
- border-radius: 0.3em;
- text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5);
- border: 1px #c9c9c9 solid;
- -webkit-transition: border-color 100ms ease-in-out;
- -moz-transition: border-color 100ms ease-in-out;
- -ms-transition: border-color 100ms ease-in-out;
- -o-transition: border-color 100ms ease-in-out;
- transition: border-color 100ms ease-in-out;
- background: #eeeeee;
- filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ffffff', endColorstr='#dddddd');
- background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #ffffff), color-stop(100%, #dddddd));
- background-image: -webkit-linear-gradient(top, #ffffff 0%, #dddddd 100%);
- background-image: -moz-linear-gradient(top, #ffffff 0%, #dddddd 100%);
- background-image: -ms-linear-gradient(top, #ffffff 0%, #dddddd 100%);
- background-image: -o-linear-gradient(top, #ffffff 0%, #dddddd 100%);
- background-image: linear-gradient(top, #ffffff 0%, #dddddd 100%);
+ margin: 0.1em 0;
+ padding: 0.2em 0.8em;
+ border-radius: 0.3em;
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5);
+ border: 1px #c9c9c9 solid;
+ -webkit-transition: border-color 100ms ease-in-out;
+ -moz-transition: border-color 100ms ease-in-out;
+ -ms-transition: border-color 100ms ease-in-out;
+ -o-transition: border-color 100ms ease-in-out;
+ transition: border-color 100ms ease-in-out;
+ background: #eeeeee;
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ffffff', endColorstr='#dddddd');
+ background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #ffffff), color-stop(100%, #dddddd));
+ background-image: -webkit-linear-gradient(top, #ffffff 0%, #dddddd 100%);
+ background-image: -moz-linear-gradient(top, #ffffff 0%, #dddddd 100%);
+ background-image: -ms-linear-gradient(top, #ffffff 0%, #dddddd 100%);
+ background-image: -o-linear-gradient(top, #ffffff 0%, #dddddd 100%);
+ background-image: linear-gradient(top, #ffffff 0%, #dddddd 100%);
}
.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button:hover,
.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button:focus {
- border-color: #aaa;
+ border-color: #aaaaaa;
}
.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
- line-height: 1.9em;
+ line-height: 1.9em;
}
.oo-ui-buttonElement-framed.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
.oo-ui-buttonElement-framed.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
- box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.07);
- color: black;
- border-color: #c9c9c9;
- background: #eeeeee;
- filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#dddddd', endColorstr='#ffffff');
- background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #dddddd), color-stop(100%, #ffffff));
- background-image: -webkit-linear-gradient(top, #dddddd 0%, #ffffff 100%);
- background-image: -moz-linear-gradient(top, #dddddd 0%, #ffffff 100%);
- background-image: -ms-linear-gradient(top, #dddddd 0%, #ffffff 100%);
- background-image: -o-linear-gradient(top, #dddddd 0%, #ffffff 100%);
- background-image: linear-gradient(top, #dddddd 0%, #ffffff 100%);
+ box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.07);
+ color: black;
+ border-color: #c9c9c9;
+ background: #eeeeee;
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#dddddd', endColorstr='#ffffff');
+ background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #dddddd), color-stop(100%, #ffffff));
+ background-image: -webkit-linear-gradient(top, #dddddd 0%, #ffffff 100%);
+ background-image: -moz-linear-gradient(top, #dddddd 0%, #ffffff 100%);
+ background-image: -ms-linear-gradient(top, #dddddd 0%, #ffffff 100%);
+ background-image: -o-linear-gradient(top, #dddddd 0%, #ffffff 100%);
+ background-image: linear-gradient(top, #dddddd 0%, #ffffff 100%);
}
.oo-ui-buttonElement-framed.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
- margin-left: -0.5em;
- margin-right: -0.5em;
+ margin-left: -0.5em;
+ margin-right: -0.5em;
}
.oo-ui-buttonElement-framed.oo-ui-iconElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
- margin-left: -0.5em;
- margin-right: 0.3em;
+ margin-left: -0.5em;
+ margin-right: 0.3em;
}
.oo-ui-buttonElement-framed.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button {
- border: solid 1px #a6cee1;
- background: #cde7f4;
- filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#eaf4fa', endColorstr='#b0d9ee');
- background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #eaf4fa), color-stop(100%, #b0d9ee));
- background-image: -webkit-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
- background-image: -moz-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
- background-image: -ms-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
- background-image: -o-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
- background-image: linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
+ border: solid 1px #a6cee1;
+ background: #cde7f4;
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#eaf4fa', endColorstr='#b0d9ee');
+ background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #eaf4fa), color-stop(100%, #b0d9ee));
+ background-image: -webkit-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
+ background-image: -moz-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
+ background-image: -ms-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
+ background-image: -o-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
+ background-image: linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
}
.oo-ui-buttonElement-framed.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button:hover,
.oo-ui-buttonElement-framed.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button:focus {
- border-color: #9dc2d4;
+ border-color: #9dc2d4;
}
.oo-ui-buttonElement-framed.oo-ui-flaggedElement-primary.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
.oo-ui-buttonElement-framed.oo-ui-flaggedElement-primary.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
- border: solid 1px #a6cee1;
- background: #cde7f4;
- filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#b0d9ee', endColorstr='#eaf4fa');
- background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #b0d9ee), color-stop(100%, #eaf4fa));
- background-image: -webkit-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
- background-image: -moz-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
- background-image: -ms-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
- background-image: -o-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
- background-image: linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+ border: solid 1px #a6cee1;
+ background: #cde7f4;
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#b0d9ee', endColorstr='#eaf4fa');
+ background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #b0d9ee), color-stop(100%, #eaf4fa));
+ background-image: -webkit-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+ background-image: -moz-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+ background-image: -ms-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+ background-image: -o-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+ background-image: linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
}
.oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button {
- border: solid 1px #b8d892;
- background: #daf0be;
- filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f0fbe1', endColorstr='#c3e59a');
- background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #f0fbe1), color-stop(100%, #c3e59a));
- background-image: -webkit-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
- background-image: -moz-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
- background-image: -ms-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
- background-image: -o-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
- background-image: linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
+ border: solid 1px #b8d892;
+ background: #daf0be;
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f0fbe1', endColorstr='#c3e59a');
+ background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #f0fbe1), color-stop(100%, #c3e59a));
+ background-image: -webkit-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
+ background-image: -moz-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
+ background-image: -ms-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
+ background-image: -o-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
+ background-image: linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
}
.oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:hover,
.oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:focus {
- border-color: #adcb89;
+ border-color: #adcb89;
}
.oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
.oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
- border: solid 1px #b8d892;
- background: #daf0be;
- filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#c3e59a', endColorstr='#f0fbe1');
- background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #c3e59a), color-stop(100%, #f0fbe1));
- background-image: -webkit-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
- background-image: -moz-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
- background-image: -ms-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
- background-image: -o-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
- background-image: linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
+ border: solid 1px #b8d892;
+ background: #daf0be;
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#c3e59a', endColorstr='#f0fbe1');
+ background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #c3e59a), color-stop(100%, #f0fbe1));
+ background-image: -webkit-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
+ background-image: -moz-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
+ background-image: -ms-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
+ background-image: -o-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
+ background-image: linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
}
.oo-ui-buttonElement-framed.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button {
- color: #d45353;
+ color: #d45353;
}
.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button,
.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
- opacity: 0.5;
- box-shadow: none;
- color: #333;
- background: #eee;
- border-color: #ccc;
+ opacity: 0.5;
+ box-shadow: none;
+ color: #333333;
+ background: #eeeeee;
+ border-color: #cccccc;
}
.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button:hover,
.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button:hover,
.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button:focus,
.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button:focus,
.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button:focus {
- border-color: #ccc;
- box-shadow: none;
+ border-color: #cccccc;
+ box-shadow: none;
}
.oo-ui-clippableElement-clippable {
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
}
.oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous .oo-ui-panelLayout-scrollable {
- overflow-y: hidden;
+ overflow-y: hidden;
}
.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
- width: 100%;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
+ width: 100%;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
}
.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-scrollable {
- overflow-y: auto;
+ overflow-y: auto;
}
.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-padded {
- padding: 2em;
+ padding: 2em;
}
.oo-ui-bookletLayout-outlinePanel-editable .oo-ui-outlineWidget {
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 3em;
- overflow-y: auto;
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 3em;
+ overflow-y: auto;
}
.oo-ui-bookletLayout-outlinePanel .oo-ui-outlineControlsWidget {
- position: absolute;
- bottom: 0;
- left: 0;
- right: 0;
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ right: 0;
}
.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
- padding: 1.5em;
+ padding: 1.5em;
}
.oo-ui-bookletLayout-outlinePanel {
- border-right: solid 1px #ddd;
+ border-right: solid 1px #dddddd;
}
.oo-ui-bookletLayout-outlinePanel .oo-ui-outlineControlsWidget {
- box-shadow: 0 0 0.25em rgba(0, 0, 0, 0.25);
+ box-shadow: 0 0 0.25em rgba(0, 0, 0, 0.25);
}
.oo-ui-fieldLayout {
- margin-bottom: 1em;
+ margin-bottom: 1em;
}
.oo-ui-fieldLayout:before,
.oo-ui-fieldLayout:after {
- content: " ";
- display: table;
+ content: " ";
+ display: table;
}
.oo-ui-fieldLayout:after {
- clear: both;
+ clear: both;
}
.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-labelElement-label,
.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labelElement-label {
- display: block;
- float: left;
+ display: block;
+ float: left;
}
.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-field,
.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-field {
- display: block;
- float: left;
+ display: block;
+ float: left;
}
.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labelElement-label {
- text-align: right;
+ text-align: right;
}
.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-labelElement-label {
- display: inline-block;
- vertical-align: middle;
+ display: inline-block;
+ vertical-align: middle;
}
.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-field {
- display: inline-block;
- vertical-align: middle;
+ display: inline-block;
+ vertical-align: middle;
}
.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-labelElement-label {
- display: inline-block;
+ display: inline-block;
}
.oo-ui-fieldLayout > .oo-ui-popupButtonWidget > .oo-ui-popupWidget > .oo-ui-popupWidget-popup {
- z-index: 1;
+ z-index: 1;
}
.oo-ui-fieldLayout .oo-ui-fieldLayout-help {
- float: right;
+ float: right;
}
.oo-ui-fieldLayout .oo-ui-fieldLayout-help-content {
- padding: 0.5em 0.75em;
+ padding: 0.5em 0.75em;
}
.oo-ui-fieldLayout:last-child {
- margin-bottom: 0;
+ margin-bottom: 0;
}
.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-labelElement-label,
.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labelElement-label {
- padding-top: 0.5em;
- margin-right: 5%;
- width: 35%;
+ padding-top: 0.5em;
+ margin-right: 5%;
+ width: 35%;
}
.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-field,
.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-field {
- width: 60%;
+ width: 60%;
}
.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-labelElement-label {
- padding: 0.75em 0.5em 0.5em 0.5em;
+ padding: 0.75em 0.5em 0.5em 0.5em;
}
.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-field {
- padding: 0.5em 0;
+ padding: 0.5em 0;
}
.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-labelElement-label {
- padding: 0.5em 0;
+ padding: 0.5em 0;
}
.oo-ui-fieldLayout > .oo-ui-popupButtonWidget > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
- margin-top: 0.25em;
+ margin-top: 0.25em;
}
.oo-ui-fieldLayout-disabled .oo-ui-labelElement-label {
- color: #ccc;
+ color: #cccccc;
}
.oo-ui-fieldsetLayout {
- position: relative;
- margin: 0;
- padding: 0;
- border: none;
+ position: relative;
+ margin: 0;
+ padding: 0;
+ border: none;
}
.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
- display: block;
- position: absolute;
- background-position: center center;
- background-repeat: no-repeat;
+ display: block;
+ position: absolute;
+ background-position: center center;
+ background-repeat: no-repeat;
}
.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-labelElement-label {
- display: inline-block;
+ display: inline-block;
}
.oo-ui-fieldsetLayout + .oo-ui-fieldsetLayout {
- margin-top: 2em;
+ margin-top: 2em;
}
.oo-ui-fieldsetLayout > .oo-ui-labelElement-label {
- font-size: 1.5em;
- margin-bottom: 0.5em;
- padding: 0.25em 0;
+ font-size: 1.5em;
+ margin-bottom: 0.5em;
+ padding: 0.25em 0;
}
.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-labelElement-label {
- padding-left: 1.75em;
- line-height: 1.33em;
+ padding-left: 1.75em;
+ line-height: 1.33em;
}
.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
- left: 0;
- top: 0.25em;
- width: 2em;
- height: 2em;
+ left: 0;
+ top: 0.25em;
+ width: 2em;
+ height: 2em;
}
.oo-ui-gridLayout {
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
}
.oo-ui-panelLayout {
- position: relative;
+ position: relative;
}
.oo-ui-panelLayout-scrollable {
- overflow-y: auto;
+ overflow-y: auto;
}
.oo-ui-panelLayout-expanded {
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
}
.oo-ui-panelLayout-padded {
- padding: 1.25em;
+ padding: 1.25em;
}
.oo-ui-stackLayout > .oo-ui-panelLayout {
- display: none;
+ display: none;
}
.oo-ui-stackLayout-continuous > .oo-ui-panelLayout {
- display: block;
- position: relative;
+ display: block;
+ position: relative;
}
.oo-ui-popupTool .oo-ui-popupWidget-popup,
.oo-ui-popupTool .oo-ui-popupWidget-anchor {
- z-index: 4;
+ z-index: 4;
}
.oo-ui-popupTool .oo-ui-popupWidget {
- margin-left: 1.25em;
- font-size: 0.8em;
+ margin-left: 1.25em;
+ font-size: 0.8em;
}
.oo-ui-toolGroup {
- display: inline-block;
- vertical-align: middle;
- margin: 0.3em;
- border-radius: 0.25em;
- border: solid 1px transparent;
- -webkit-transition: border-color 300ms ease-in-out;
- -moz-transition: border-color 300ms ease-in-out;
- -ms-transition: border-color 300ms ease-in-out;
- -o-transition: border-color 300ms ease-in-out;
- transition: border-color 300ms ease-in-out;
+ display: inline-block;
+ vertical-align: middle;
+ margin: 0.3em;
+ border-radius: 0.25em;
+ border: solid 1px transparent;
+ -webkit-transition: border-color 300ms ease-in-out;
+ -moz-transition: border-color 300ms ease-in-out;
+ -ms-transition: border-color 300ms ease-in-out;
+ -o-transition: border-color 300ms ease-in-out;
+ transition: border-color 300ms ease-in-out;
}
.oo-ui-toolGroup-empty {
- display: none;
+ display: none;
}
.oo-ui-toolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
- background-position: center center;
- background-repeat: no-repeat;
+ background-position: center center;
+ background-repeat: no-repeat;
}
.oo-ui-toolGroup.oo-ui-widget-enabled:hover {
- border-color: rgba(0, 0, 0, 0.1);
+ border-color: rgba(0, 0, 0, 0.1);
}
.oo-ui-toolGroup.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-tool-title {
- color: #000;
+ color: #000000;
}
.oo-ui-barToolGroup > .oo-ui-iconElement-icon,
.oo-ui-barToolGroup > .oo-ui-labelElement-label {
- display: none;
+ display: none;
}
.oo-ui-barToolGroup .oo-ui-tool {
- display: inline-block;
- position: relative;
- vertical-align: top;
+ display: inline-block;
+ position: relative;
+ vertical-align: top;
}
.oo-ui-barToolGroup .oo-ui-tool-link {
- display: block;
+ display: block;
}
.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
- display: block;
+ display: block;
}
.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-tool-title {
- display: none;
+ display: none;
}
.oo-ui-barToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
- cursor: default;
+ cursor: default;
}
.oo-ui-barToolGroup .oo-ui-tool-title,
.oo-ui-barToolGroup .oo-ui-tool-accel {
- display: none;
+ display: none;
}
.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-link {
- cursor: pointer;
+ cursor: pointer;
}
.oo-ui-barToolGroup .oo-ui-tool {
- margin: -1px 0 -1px -1px;
- border: solid 1px transparent;
+ margin: -1px 0 -1px -1px;
+ border: solid 1px transparent;
}
.oo-ui-barToolGroup .oo-ui-tool:first-child {
- border-top-left-radius: 0.25em;
- border-bottom-left-radius: 0.25em;
+ border-top-left-radius: 0.25em;
+ border-bottom-left-radius: 0.25em;
}
.oo-ui-barToolGroup .oo-ui-tool:last-child {
- margin-right: -1px;
- border-top-right-radius: 0.25em;
- border-bottom-right-radius: 0.25em;
+ margin-right: -1px;
+ border-top-right-radius: 0.25em;
+ border-bottom-right-radius: 0.25em;
}
.oo-ui-barToolGroup .oo-ui-tool-link {
- height: 1.5em;
- padding: 0.25em;
+ height: 1.5em;
+ padding: 0.25em;
}
.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
- height: 1.5em;
- width: 1.5em;
- opacity: 0.8;
+ height: 1.5em;
+ width: 1.5em;
+ opacity: 0.8;
}
.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-enabled:hover {
- border-color: rgba(0, 0, 0, 0.2);
+ border-color: rgba(0, 0, 0, 0.2);
}
.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-active.oo-ui-widget-enabled {
- border-color: rgba(0, 0, 0, 0.2);
- box-shadow: inset 0 0.07em 0.07em 0 rgba(0, 0, 0, 0.07);
- background: #f8fbfd;
- filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f1f7fb', endColorstr='#ffffff');
- background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #f1f7fb), color-stop(100%, #ffffff));
- background-image: -webkit-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
- background-image: -moz-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
- background-image: -ms-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
- background-image: -o-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
- background-image: linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+ border-color: rgba(0, 0, 0, 0.2);
+ box-shadow: inset 0 0.07em 0.07em 0 rgba(0, 0, 0, 0.07);
+ background: #f8fbfd;
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f1f7fb', endColorstr='#ffffff');
+ background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #f1f7fb), color-stop(100%, #ffffff));
+ background-image: -webkit-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+ background-image: -moz-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+ background-image: -ms-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+ background-image: -o-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+ background-image: linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
}
.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-active.oo-ui-widget-enabled + .oo-ui-tool-active.oo-ui-widget-enabled {
- border-left-color: rgba(0, 0, 0, 0.1);
+ border-left-color: rgba(0, 0, 0, 0.1);
}
.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconElement-icon {
- opacity: 0.2;
+ opacity: 0.2;
}
.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-iconElement-icon {
- opacity: 0.8;
+ opacity: 0.8;
}
.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-enabled:hover .oo-ui-tool-link .oo-ui-iconElement-icon {
- opacity: 1;
+ opacity: 1;
}
.oo-ui-barToolGroup.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconElement-icon {
- opacity: 0.2;
+ opacity: 0.2;
}
.oo-ui-popupToolGroup {
- position: relative;
- height: 2em;
- min-width: 2.5em;
+ position: relative;
+ height: 2em;
+ min-width: 2.5em;
}
.oo-ui-popupToolGroup-handle {
- display: block;
- cursor: pointer;
+ display: block;
+ cursor: pointer;
}
.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator,
.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
- position: absolute;
- background-position: center center;
- background-repeat: no-repeat;
+ position: absolute;
+ background-position: center center;
+ background-repeat: no-repeat;
}
.oo-ui-popupToolGroup.oo-ui-widget-disabled .oo-ui-popupToolGroup-handle {
- cursor: default;
+ cursor: default;
}
.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
- display: none;
- position: absolute;
- z-index: 4;
+ display: none;
+ position: absolute;
+ z-index: 4;
}
.oo-ui-popupToolGroup .oo-ui-toolGroup-tools .oo-ui-iconElement-icon {
- background-repeat: no-repeat;
- background-position: center center;
+ background-repeat: no-repeat;
+ background-position: center center;
}
.oo-ui-popupToolGroup-active.oo-ui-widget-enabled > .oo-ui-toolGroup-tools {
- display: block;
+ display: block;
}
.oo-ui-popupToolGroup-left > .oo-ui-toolGroup-tools {
- left: 0;
+ left: 0;
}
.oo-ui-popupToolGroup-right > .oo-ui-toolGroup-tools {
- right: 0;
+ right: 0;
}
.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
- display: inline-block;
- vertical-align: middle;
+ display: inline-block;
+ vertical-align: middle;
}
.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
- display: inline-block;
- vertical-align: middle;
+ display: inline-block;
+ vertical-align: middle;
}
.oo-ui-popupToolGroup .oo-ui-tool-accel {
- display: none;
+ display: none;
}
.oo-ui-popupToolGroup.oo-ui-indicatorElement.oo-ui-iconElement {
- min-width: 3.5em;
+ min-width: 3.5em;
}
.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator,
.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
- top: 0;
- width: 2em;
- height: 2em;
- opacity: 0.8;
+ top: 0;
+ width: 2em;
+ height: 2em;
+ opacity: 0.8;
}
.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator {
- right: 0;
+ right: 0;
}
.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
- left: 0.25em;
+ left: 0.25em;
}
.oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
- line-height: 2.6em;
- font-size: 0.8em;
- margin: 0 1em;
+ line-height: 2.6em;
+ font-size: 0.8em;
+ margin: 0 1em;
}
.oo-ui-popupToolGroup-header {
- line-height: 2.6em;
- font-size: 0.8em;
- margin: 0 0.6em;
- font-weight: bold;
+ line-height: 2.6em;
+ font-size: 0.8em;
+ margin: 0 0.6em;
+ font-weight: bold;
}
.oo-ui-popupToolGroup-active.oo-ui-widget-enabled {
- border-bottom-left-radius: 0;
- border-bottom-right-radius: 0;
- box-shadow: inset 0 0.07em 0.07em 0 rgba(0, 0, 0, 0.07);
- background: #f8fbfd;
- filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f1f7fb', endColorstr='#ffffff');
- background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #f1f7fb), color-stop(100%, #ffffff));
- background-image: -webkit-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
- background-image: -moz-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
- background-image: -ms-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
- background-image: -o-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
- background-image: linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+ border-bottom-left-radius: 0;
+ border-bottom-right-radius: 0;
+ box-shadow: inset 0 0.07em 0.07em 0 rgba(0, 0, 0, 0.07);
+ background: #f8fbfd;
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f1f7fb', endColorstr='#ffffff');
+ background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #f1f7fb), color-stop(100%, #ffffff));
+ background-image: -webkit-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+ background-image: -moz-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+ background-image: -ms-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+ background-image: -o-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+ background-image: linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
}
.oo-ui-popupToolGroup.oo-ui-iconElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
- margin-left: 3em;
+ margin-left: 3em;
}
.oo-ui-popupToolGroup.oo-ui-indicatorElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
- margin-right: 2.25em;
+ margin-right: 2.25em;
}
.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
- top: 2em;
- margin: 0 -1px;
- border: solid 1px #ccc;
- background-color: white;
- box-shadow: 0 0.25em 1em rgba(0, 0, 0, 0.25);
+ top: 2em;
+ margin: 0 -1px;
+ border: solid 1px #cccccc;
+ background-color: white;
+ box-shadow: 0 0.25em 1em rgba(0, 0, 0, 0.25);
}
.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
- height: 2em;
- width: 2em;
- margin-right: 0.25em;
+ height: 2em;
+ width: 2em;
+ margin-right: 0.25em;
}
.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
- line-height: 2em;
- font-size: 0.8em;
+ line-height: 2em;
+ font-size: 0.8em;
}
.oo-ui-listToolGroup .oo-ui-tool {
- display: inline-block;
- width: 100%;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
+ display: inline-block;
+ width: 100%;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
}
.oo-ui-listToolGroup .oo-ui-tool-link {
- display: block;
- cursor: pointer;
- white-space: nowrap;
+ display: block;
+ cursor: pointer;
+ white-space: nowrap;
}
.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
- cursor: default;
+ cursor: default;
}
.oo-ui-listToolGroup .oo-ui-toolGroup-tools {
- padding: 0.25em;
+ padding: 0.25em;
}
.oo-ui-listToolGroup.oo-ui-popupToolGroup-active {
- border-color: rgba(0, 0, 0, 0.2);
+ border-color: rgba(0, 0, 0, 0.2);
}
.oo-ui-listToolGroup .oo-ui-tool {
- border: solid 1px transparent;
- margin: -1px 0;
+ border: solid 1px transparent;
+ margin: -1px 0;
}
.oo-ui-listToolGroup .oo-ui-tool-link {
- padding-right: 0.5em;
+ padding-right: 0.5em;
}
.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled {
- border-color: rgba(0, 0, 0, 0.1);
- box-shadow: inset 0 0.07em 0.07em 0 rgba(0, 0, 0, 0.07);
- background: #f8fbfd;
- filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f1f7fb', endColorstr='#ffffff');
- background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #f1f7fb), color-stop(100%, #ffffff));
- background-image: -webkit-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
- background-image: -moz-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
- background-image: -ms-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
- background-image: -o-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
- background-image: linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+ border-color: rgba(0, 0, 0, 0.1);
+ box-shadow: inset 0 0.07em 0.07em 0 rgba(0, 0, 0, 0.07);
+ background: #f8fbfd;
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f1f7fb', endColorstr='#ffffff');
+ background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #f1f7fb), color-stop(100%, #ffffff));
+ background-image: -webkit-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+ background-image: -moz-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+ background-image: -ms-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+ background-image: -o-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+ background-image: linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
}
.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled + .oo-ui-tool-active.oo-ui-widget-enabled {
- border-top-color: rgba(0, 0, 0, 0.1);
+ border-top-color: rgba(0, 0, 0, 0.1);
}
.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled:hover {
- border-color: rgba(0, 0, 0, 0.2);
+ border-color: rgba(0, 0, 0, 0.2);
}
.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover {
- border-color: rgba(0, 0, 0, 0.2);
+ border-color: rgba(0, 0, 0, 0.2);
}
.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-iconElement-icon {
- opacity: 0.8;
+ opacity: 0.8;
}
.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover .oo-ui-tool-link .oo-ui-iconElement-icon {
- opacity: 1;
+ opacity: 1;
}
.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-tool-title {
- color: #ccc;
+ color: #cccccc;
}
.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconElement-icon {
- opacity: 0.2;
+ opacity: 0.2;
}
.oo-ui-listToolGroup.oo-ui-widget-disabled {
- color: #ccc;
+ color: #cccccc;
}
.oo-ui-listToolGroup.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator,
.oo-ui-listToolGroup.oo-ui-widget-disabled .oo-ui-iconElement-icon {
- opacity: 0.2;
+ opacity: 0.2;
}
.oo-ui-menuToolGroup {
- border-color: rgba(0, 0, 0, 0.1);
+ border-color: rgba(0, 0, 0, 0.1);
}
.oo-ui-menuToolGroup .oo-ui-tool {
- display: block;
+ display: block;
}
.oo-ui-menuToolGroup .oo-ui-tool-link {
- display: block;
- cursor: pointer;
- white-space: nowrap;
+ display: block;
+ cursor: pointer;
+ white-space: nowrap;
}
.oo-ui-menuToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
- background-image: none;
+ background-image: none;
}
.oo-ui-menuToolGroup .oo-ui-tool-active .oo-ui-tool-link .oo-ui-iconElement-icon {
- background-image: /* @embed */ url(images/icons/check.svg);
+ background-image: /* @embed */ url(images/icons/check.svg);
}
.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
- cursor: default;
+ cursor: default;
}
.oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle {
- min-width: 8em;
+ min-width: 8em;
}
.oo-ui-menuToolGroup .oo-ui-toolGroup-tools {
- padding: 0.25em 0 0.25em 0;
+ padding: 0.25em 0 0.25em 0;
}
.oo-ui-menuToolGroup.oo-ui-widget-enabled:hover {
- border-color: rgba(0, 0, 0, 0.2);
+ border-color: rgba(0, 0, 0, 0.2);
}
.oo-ui-menuToolGroup.oo-ui-popupToolGroup-active {
- border-color: rgba(0, 0, 0, 0.25);
+ border-color: rgba(0, 0, 0, 0.25);
}
.oo-ui-menuToolGroup .oo-ui-tool-link {
- padding: 0 1em 0 0.25em;
+ padding: 0 1em 0 0.25em;
}
.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover {
- background-color: #e1f3ff;
+ background-color: #e1f3ff;
}
.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-tool-title {
- color: #ccc;
+ color: #cccccc;
}
.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconElement-icon {
- opacity: 0.2;
+ opacity: 0.2;
}
.oo-ui-menuToolGroup.oo-ui-widget-disabled {
- color: #ccc;
- border-color: rgba(0, 0, 0, 0.05);
+ color: #cccccc;
+ border-color: rgba(0, 0, 0, 0.05);
}
.oo-ui-menuToolGroup.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator,
.oo-ui-menuToolGroup.oo-ui-widget-disabled .oo-ui-iconElement-icon {
- opacity: 0.2;
+ opacity: 0.2;
}
.oo-ui-toolbar {
- clear: both;
+ clear: both;
}
.oo-ui-toolbar-bar {
- line-height: 1em;
+ line-height: 1em;
}
.oo-ui-toolbar-actions {
- float: right;
+ float: right;
}
.oo-ui-toolbar-tools {
- display: inline;
+ display: inline;
}
.oo-ui-toolbar-tools,
.oo-ui-toolbar-actions,
.oo-ui-toolbar-shadow {
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
}
.oo-ui-toolbar-actions .oo-ui-popupWidget {
- -webkit-touch-callout: default;
- -webkit-user-select: all;
- -moz-user-select: all;
- -ms-user-select: all;
- user-select: all;
+ -webkit-touch-callout: default;
+ -webkit-user-select: all;
+ -moz-user-select: all;
+ -ms-user-select: all;
+ user-select: all;
}
.oo-ui-toolbar-shadow {
- background-position: left top;
- background-repeat: repeat-x;
- position: absolute;
- width: 100%;
- pointer-events: none;
+ background-position: left top;
+ background-repeat: repeat-x;
+ position: absolute;
+ width: 100%;
+ pointer-events: none;
}
.oo-ui-toolbar-bar {
- border-bottom: solid 1px #ccc;
- background: #f8fbfd;
- filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ffffff', endColorstr='#f1f7fb');
- background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #ffffff), color-stop(100%, #f1f7fb));
- background-image: -webkit-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
- background-image: -moz-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
- background-image: -ms-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
- background-image: -o-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
- background-image: linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
+ border-bottom: solid 1px #cccccc;
+ background: #f8fbfd;
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ffffff', endColorstr='#f1f7fb');
+ background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #ffffff), color-stop(100%, #f1f7fb));
+ background-image: -webkit-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
+ background-image: -moz-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
+ background-image: -ms-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
+ background-image: -o-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
+ background-image: linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
}
.oo-ui-toolbar-bar .oo-ui-toolbar-bar {
- border: none;
- background: none;
+ border: none;
+ background: none;
}
.oo-ui-toolbar-shadow {
- background-image: /* @embed */ url(images/toolbar-shadow.png);
- bottom: -9px;
- height: 9px;
- opacity: 0.125;
- -webkit-transition: opacity 500ms ease-in-out;
- -moz-transition: opacity 500ms ease-in-out;
- -ms-transition: opacity 500ms ease-in-out;
- -o-transition: opacity 500ms ease-in-out;
- transition: opacity 500ms ease-in-out;
+ background-image: /* @embed */ url(images/toolbar-shadow.png);
+ bottom: -9px;
+ height: 9px;
+ opacity: 0.125;
+ -webkit-transition: opacity 500ms ease-in-out;
+ -moz-transition: opacity 500ms ease-in-out;
+ -ms-transition: opacity 500ms ease-in-out;
+ -o-transition: opacity 500ms ease-in-out;
+ transition: opacity 500ms ease-in-out;
}
.oo-ui-optionWidget {
- position: relative;
- display: block;
- cursor: pointer;
- padding: 0.5em 2em 0.5em 3em;
- border: none;
+ position: relative;
+ display: block;
+ cursor: pointer;
+ padding: 0.5em 2em 0.5em 3em;
+ border: none;
}
.oo-ui-optionWidget.oo-ui-widget-disabled {
- cursor: default;
+ cursor: default;
}
.oo-ui-optionWidget .oo-ui-labelElement-label {
- display: block;
- white-space: nowrap;
- text-overflow: ellipsis;
- overflow: hidden;
+ display: block;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
}
.oo-ui-optionWidget-highlighted {
- background-color: #e1f3ff;
+ background-color: #e1f3ff;
}
.oo-ui-optionWidget .oo-ui-labelElement-label {
- line-height: 1.5em;
+ line-height: 1.5em;
}
.oo-ui-selectWidget-depressed .oo-ui-optionWidget-selected {
- background-color: #a7dcff;
+ background-color: #a7dcff;
}
.oo-ui-selectWidget-pressed .oo-ui-optionWidget-pressed {
- background-color: #a7dcff;
+ background-color: #a7dcff;
}
.oo-ui-optionWidget.oo-ui-widget-disabled {
- color: #ccc;
+ color: #cccccc;
}
.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon,
.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
- position: absolute;
- background-repeat: no-repeat;
- background-position: center center;
+ position: absolute;
+ background-repeat: no-repeat;
+ background-position: center center;
}
.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon,
.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
- top: 50%;
- width: 2em;
- height: 2em;
- margin-top: -1em;
+ top: 50%;
+ width: 2em;
+ height: 2em;
+ margin-top: -1em;
}
.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon {
- left: 0.5em;
+ left: 0.5em;
}
.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
- right: 0.5em;
+ right: 0.5em;
}
.oo-ui-buttonSelectWidget {
- display: inline-block;
- white-space: nowrap;
- border-radius: 0.3em;
+ display: inline-block;
+ white-space: nowrap;
+ border-radius: 0.3em;
}
.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
- border-radius: 0;
- margin-left: -1px;
+ border-radius: 0;
+ margin-left: -1px;
}
.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget:first-child .oo-ui-buttonElement-button {
- border-bottom-left-radius: 0.3em;
- border-top-left-radius: 0.3em;
- margin-left: 0;
+ border-bottom-left-radius: 0.3em;
+ border-top-left-radius: 0.3em;
+ margin-left: 0;
}
.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget:last-child .oo-ui-buttonElement-button {
- border-bottom-right-radius: 0.3em;
- border-top-right-radius: 0.3em;
+ border-bottom-right-radius: 0.3em;
+ border-top-right-radius: 0.3em;
}
.oo-ui-buttonOptionWidget {
- display: inline-block;
- padding: 0;
- background-color: transparent;
+ display: inline-block;
+ padding: 0;
+ background-color: transparent;
}
.oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
- position: relative;
+ position: relative;
}
.oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
.oo-ui-buttonOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
- position: static;
- display: inline-block;
- vertical-align: middle;
+ position: static;
+ display: inline-block;
+ vertical-align: middle;
}
.oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
- height: 1.9em;
+ height: 1.9em;
}
.oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
.oo-ui-buttonOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
- height: 1.9em;
- margin-top: 0;
+ height: 1.9em;
+ margin-top: 0;
}
.oo-ui-buttonOptionWidget.oo-ui-optionWidget-selected,
.oo-ui-buttonOptionWidget.oo-ui-optionWidget-pressed,
.oo-ui-buttonOptionWidget.oo-ui-optionWidget-highlighted {
- background-color: transparent;
+ background-color: transparent;
}
.oo-ui-labelWidget {
- display: inline-block;
- padding: 0.5em 0;
+ display: inline-block;
+ padding: 0.5em 0;
}
.oo-ui-iconWidget {
- display: inline-block;
- vertical-align: middle;
- background-position: center center;
- background-repeat: no-repeat;
- line-height: 2.5em;
- height: 1.9em;
- width: 1.9em;
- opacity: 0.8;
+ display: inline-block;
+ vertical-align: middle;
+ background-position: center center;
+ background-repeat: no-repeat;
+ line-height: 2.5em;
+ height: 1.9em;
+ width: 1.9em;
+ opacity: 0.8;
}
.oo-ui-iconWidget.oo-ui-widget-disabled {
- opacity: 0.2;
+ opacity: 0.2;
}
.oo-ui-indicatorWidget {
- display: inline-block;
- vertical-align: middle;
- background-position: center center;
- background-repeat: no-repeat;
- line-height: 2.5em;
- height: 1.9em;
- width: 1.9em;
- opacity: 0.8;
+ display: inline-block;
+ vertical-align: middle;
+ background-position: center center;
+ background-repeat: no-repeat;
+ line-height: 2.5em;
+ height: 1.9em;
+ width: 1.9em;
+ opacity: 0.8;
}
.oo-ui-indicatorWidget.oo-ui-widget-disabled {
- opacity: 0.2;
+ opacity: 0.2;
}
.oo-ui-buttonWidget {
- display: inline-block;
- vertical-align: middle;
+ display: inline-block;
+ vertical-align: middle;
}
.oo-ui-buttonGroupWidget {
- display: inline-block;
- white-space: nowrap;
- border-radius: 0.3em;
+ display: inline-block;
+ white-space: nowrap;
+ border-radius: 0.3em;
}
.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
- border-radius: 0;
- margin-bottom: -1px;
- margin-left: -1px;
+ border-radius: 0;
+ margin-bottom: -1px;
+ margin-left: -1px;
}
.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:first-child .oo-ui-buttonElement-button {
- border-bottom-left-radius: 0.3em;
- border-top-left-radius: 0.3em;
- margin-left: 0;
+ border-bottom-left-radius: 0.3em;
+ border-top-left-radius: 0.3em;
+ margin-left: 0;
}
.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:last-child .oo-ui-buttonElement-button {
- border-bottom-right-radius: 0.3em;
- border-top-right-radius: 0.3em;
+ border-bottom-right-radius: 0.3em;
+ border-top-right-radius: 0.3em;
}
.oo-ui-toggleSwitchWidget {
- position: relative;
- display: inline-block;
- vertical-align: middle;
- overflow: hidden;
- cursor: pointer;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- -webkit-transform: translateZ(0px);
- -moz-transform: translateZ(0px);
- -ms-transform: translateZ(0px);
- -o-transform: translateZ(0px);
- transform: translateZ(0px);
- height: 2em;
- width: 4em;
- border-radius: 1em;
- box-shadow: 0 0 0 white, inset 0 0.1em 0.2em #ddd;
- border: solid 1px #ccc;
- background: #eeeeee;
- filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#dddddd', endColorstr='#ffffff');
- background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #dddddd), color-stop(100%, #ffffff));
- background-image: -webkit-linear-gradient(top, #dddddd 0%, #ffffff 100%);
- background-image: -moz-linear-gradient(top, #dddddd 0%, #ffffff 100%);
- background-image: -ms-linear-gradient(top, #dddddd 0%, #ffffff 100%);
- background-image: -o-linear-gradient(top, #dddddd 0%, #ffffff 100%);
- background-image: linear-gradient(top, #dddddd 0%, #ffffff 100%);
+ position: relative;
+ display: inline-block;
+ vertical-align: middle;
+ overflow: hidden;
+ cursor: pointer;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ -webkit-transform: translateZ(0px);
+ -moz-transform: translateZ(0px);
+ -ms-transform: translateZ(0px);
+ -o-transform: translateZ(0px);
+ transform: translateZ(0px);
+ height: 2em;
+ width: 4em;
+ border-radius: 1em;
+ box-shadow: 0 0 0 white, inset 0 0.1em 0.2em #dddddd;
+ border: solid 1px #cccccc;
+ background: #eeeeee;
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#dddddd', endColorstr='#ffffff');
+ background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #dddddd), color-stop(100%, #ffffff));
+ background-image: -webkit-linear-gradient(top, #dddddd 0%, #ffffff 100%);
+ background-image: -moz-linear-gradient(top, #dddddd 0%, #ffffff 100%);
+ background-image: -ms-linear-gradient(top, #dddddd 0%, #ffffff 100%);
+ background-image: -o-linear-gradient(top, #dddddd 0%, #ffffff 100%);
+ background-image: linear-gradient(top, #dddddd 0%, #ffffff 100%);
}
.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
- cursor: default;
+ cursor: default;
}
.oo-ui-toggleSwitchWidget-grip {
- position: absolute;
- display: block;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
+ position: absolute;
+ display: block;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
}
.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow {
- position: absolute;
- top: 0;
- bottom: 0;
- right: 0;
- left: 0;
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ right: 0;
+ left: 0;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
}
.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
- display: none;
+ display: none;
}
.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
- opacity: 0.5;
+ opacity: 0.5;
}
.oo-ui-toggleSwitchWidget-grip {
- top: 0.25em;
- left: 0.25em;
- width: 1.5em;
- height: 1.5em;
- margin-top: -1px;
- border-radius: 1em;
- box-shadow: 0 0.1em 0.25em rgba(0, 0, 0, 0.1);
- border: 1px #c9c9c9 solid;
- -webkit-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
- -moz-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
- -ms-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
- -o-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
- transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
- background: #eeeeee;
- filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ffffff', endColorstr='#dddddd');
- background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #ffffff), color-stop(100%, #dddddd));
- background-image: -webkit-linear-gradient(top, #ffffff 0%, #dddddd 100%);
- background-image: -moz-linear-gradient(top, #ffffff 0%, #dddddd 100%);
- background-image: -ms-linear-gradient(top, #ffffff 0%, #dddddd 100%);
- background-image: -o-linear-gradient(top, #ffffff 0%, #dddddd 100%);
- background-image: linear-gradient(top, #ffffff 0%, #dddddd 100%);
+ top: 0.25em;
+ left: 0.25em;
+ width: 1.5em;
+ height: 1.5em;
+ margin-top: -1px;
+ border-radius: 1em;
+ box-shadow: 0 0.1em 0.25em rgba(0, 0, 0, 0.1);
+ border: 1px #c9c9c9 solid;
+ -webkit-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
+ -moz-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
+ -ms-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
+ -o-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
+ transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
+ background: #eeeeee;
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ffffff', endColorstr='#dddddd');
+ background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #ffffff), color-stop(100%, #dddddd));
+ background-image: -webkit-linear-gradient(top, #ffffff 0%, #dddddd 100%);
+ background-image: -moz-linear-gradient(top, #ffffff 0%, #dddddd 100%);
+ background-image: -ms-linear-gradient(top, #ffffff 0%, #dddddd 100%);
+ background-image: -o-linear-gradient(top, #ffffff 0%, #dddddd 100%);
+ background-image: linear-gradient(top, #ffffff 0%, #dddddd 100%);
}
.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover,
.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover .oo-ui-toggleSwitchWidget-grip {
- border-color: #aaa;
+ border-color: #aaaaaa;
}
.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow {
- border-radius: 1em;
- box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.07);
- -webkit-transition: opacity 200ms ease-in-out;
- -moz-transition: opacity 200ms ease-in-out;
- -ms-transition: opacity 200ms ease-in-out;
- -o-transition: opacity 200ms ease-in-out;
- transition: opacity 200ms ease-in-out;
- background: #cde7f4;
- filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#b0d9ee', endColorstr='#eaf4fa');
- background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #b0d9ee), color-stop(100%, #eaf4fa));
- background-image: -webkit-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
- background-image: -moz-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
- background-image: -ms-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
- background-image: -o-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
- background-image: linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+ border-radius: 1em;
+ box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.07);
+ -webkit-transition: opacity 200ms ease-in-out;
+ -moz-transition: opacity 200ms ease-in-out;
+ -ms-transition: opacity 200ms ease-in-out;
+ -o-transition: opacity 200ms ease-in-out;
+ transition: opacity 200ms ease-in-out;
+ background: #cde7f4;
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#b0d9ee', endColorstr='#eaf4fa');
+ background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #b0d9ee), color-stop(100%, #eaf4fa));
+ background-image: -webkit-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+ background-image: -moz-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+ background-image: -ms-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+ background-image: -o-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+ background-image: linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
}
.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-glow {
- opacity: 1;
+ opacity: 1;
}
.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip {
- left: 2.25em;
- margin-left: -2px;
+ left: 2.25em;
+ margin-left: -2px;
}
.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
- display: block;
- opacity: 0;
+ display: block;
+ opacity: 0;
}
.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-grip {
- left: 0.25em;
- margin-left: 0;
+ left: 0.25em;
+ margin-left: 0;
}
.oo-ui-actionWidget.oo-ui-pendingElement-pending {
- background-image: /* @embed */ url(images/textures/pending.gif);
+ background-image: /* @embed */ url(images/textures/pending.gif);
}
.oo-ui-popupWidget-popup {
- position: absolute;
- overflow: hidden;
- z-index: 1;
+ position: absolute;
+ overflow: hidden;
+ z-index: 1;
}
.oo-ui-popupWidget-anchor {
- display: none;
- z-index: 1;
+ display: none;
+ z-index: 1;
}
.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor {
- display: block;
- position: absolute;
- background-repeat: no-repeat;
+ display: block;
+ position: absolute;
+ background-repeat: no-repeat;
}
.oo-ui-popupWidget-head {
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
}
.oo-ui-popupWidget-head .oo-ui-buttonWidget {
- float: right;
+ float: right;
}
.oo-ui-popupWidget-head .oo-ui-labelElement-label {
- float: left;
- cursor: default;
+ float: left;
+ cursor: default;
}
.oo-ui-popupWidget-body {
- clear: both;
- overflow: hidden;
+ clear: both;
+ overflow: hidden;
}
.oo-ui-popupWidget-popup {
- border: solid 1px #ccc;
- border-radius: 0.25em;
- background-color: #fff;
- box-shadow: 0 0.15em 0.5em 0 rgba(0, 0, 0, 0.2);
+ border: solid 1px #cccccc;
+ border-radius: 0.25em;
+ background-color: #ffffff;
+ box-shadow: 0 0.15em 0.5em 0 rgba(0, 0, 0, 0.2);
}
.oo-ui-popupWidget-anchored .oo-ui-popupWidget-popup {
- margin-top: 7px;
+ margin-top: 7px;
}
.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor {
- width: 15px;
- height: 8px;
- margin-left: -7px;
- background-image: /* @embed */ url(images/anchor.svg);
+ width: 15px;
+ height: 8px;
+ margin-left: -7px;
+ background-image: /* @embed */ url(images/anchor.svg);
}
.oo-ui-popupWidget-transitioning .oo-ui-popupWidget-popup {
- -webkit-transition: width 100ms ease-in-out, height 100ms ease-in-out, left 100ms ease-in-out;
- -moz-transition: width 100ms ease-in-out, height 100ms ease-in-out, left 100ms ease-in-out;
- -ms-transition: width 100ms ease-in-out, height 100ms ease-in-out, left 100ms ease-in-out;
- -o-transition: width 100ms ease-in-out, height 100ms ease-in-out, left 100ms ease-in-out;
- transition: width 100ms ease-in-out, height 100ms ease-in-out, left 100ms ease-in-out;
+ -webkit-transition: width 100ms ease-in-out, height 100ms ease-in-out, left 100ms ease-in-out;
+ -moz-transition: width 100ms ease-in-out, height 100ms ease-in-out, left 100ms ease-in-out;
+ -ms-transition: width 100ms ease-in-out, height 100ms ease-in-out, left 100ms ease-in-out;
+ -o-transition: width 100ms ease-in-out, height 100ms ease-in-out, left 100ms ease-in-out;
+ transition: width 100ms ease-in-out, height 100ms ease-in-out, left 100ms ease-in-out;
}
.oo-ui-popupWidget-head {
- height: 2.5em;
+ height: 2.5em;
}
.oo-ui-popupWidget-head .oo-ui-buttonWidget {
- margin: 0.25em;
+ margin: 0.25em;
}
.oo-ui-popupWidget-head .oo-ui-labelElement-label {
- margin: 0.75em 1em;
+ margin: 0.75em 1em;
}
.oo-ui-popupWidget-body {
- box-shadow: 0 0 0.66em rgba(0, 0, 0, 0.25);
+ box-shadow: 0 0 0.66em rgba(0, 0, 0, 0.25);
}
.oo-ui-popupWidget-body-padded {
- padding: 0 1em;
+ padding: 0 1em;
}
.oo-ui-popupButtonWidget {
- position: relative;
+ position: relative;
}
.oo-ui-popupButtonWidget .oo-ui-popupWidget {
- position: absolute;
- left: 1em;
- cursor: auto;
+ position: absolute;
+ left: 1em;
+ cursor: auto;
}
.oo-ui-textInputWidget {
- position: relative;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- width: 20em;
+ position: relative;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 20em;
}
.oo-ui-textInputWidget input,
.oo-ui-textInputWidget textarea {
- display: inline-block;
- width: 100%;
- resize: none;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
+ display: inline-block;
+ width: 100%;
+ resize: none;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
}
.oo-ui-textInputWidget.oo-ui-pendingElement-pending input,
.oo-ui-textInputWidget.oo-ui-pendingElement-pending textarea {
- background-image: /* @embed */ url(images/textures/pending.gif);
+ background-image: /* @embed */ url(images/textures/pending.gif);
}
.oo-ui-textInputWidget > .oo-ui-iconElement-icon,
.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator {
- position: absolute;
- top: 0;
- height: 100%;
- background-repeat: no-repeat;
- cursor: pointer;
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
+ position: absolute;
+ top: 0;
+ height: 100%;
+ background-repeat: no-repeat;
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
}
.oo-ui-textInputWidget > .oo-ui-iconElement-icon {
- left: 0;
+ left: 0;
}
.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator {
- right: 0;
+ right: 0;
}
.oo-ui-textInputWidget input,
.oo-ui-textInputWidget textarea {
- padding: 0.5em;
- font-size: 1em;
- font-family: sans-serif;
- background-color: #fff;
- border: solid 1px #ccc;
- box-shadow: 0 0 0 white, inset 0 0.1em 0.2em #ddd;
- border-radius: 0.25em;
- -webkit-transition: border-color 200ms, box-shadow 200ms;
- -moz-transition: border-color 200ms, box-shadow 200ms;
- -ms-transition: border-color 200ms, box-shadow 200ms;
- -o-transition: border-color 200ms, box-shadow 200ms;
- transition: border-color 200ms, box-shadow 200ms;
+ padding: 0.5em;
+ font-size: 1em;
+ font-family: sans-serif;
+ background-color: #ffffff;
+ border: solid 1px #cccccc;
+ box-shadow: 0 0 0 white, inset 0 0.1em 0.2em #dddddd;
+ border-radius: 0.25em;
+ -webkit-transition: border-color 200ms, box-shadow 200ms;
+ -moz-transition: border-color 200ms, box-shadow 200ms;
+ -ms-transition: border-color 200ms, box-shadow 200ms;
+ -o-transition: border-color 200ms, box-shadow 200ms;
+ transition: border-color 200ms, box-shadow 200ms;
}
.oo-ui-textInputWidget-decorated input,
.oo-ui-textInputWidget-decorated textarea {
- padding-left: 2em;
+ padding-left: 2em;
}
.oo-ui-textInputWidget-icon {
- width: 2em;
+ width: 2em;
}
.oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,
.oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus {
- outline: none;
- border-color: #a7dcff;
- box-shadow: 0 0 0.3em #a7dcff, 0 0 0 white;
+ outline: none;
+ border-color: #a7dcff;
+ box-shadow: 0 0 0.3em #a7dcff, 0 0 0 white;
}
.oo-ui-textInputWidget input[readonly],
.oo-ui-textInputWidget textarea[readonly] {
- color: #777;
- text-shadow: 0 1px 1px #fff;
+ color: #777777;
+ text-shadow: 0 1px 1px #ffffff;
}
.oo-ui-textInputWidget.oo-ui-pendingElement-pending input,
.oo-ui-textInputWidget.oo-ui-pendingElement-pending textarea {
- background-color: transparent;
+ background-color: transparent;
}
.oo-ui-textInputWidget.oo-ui-widget-disabled input,
.oo-ui-textInputWidget.oo-ui-widget-disabled input:focus,
.oo-ui-textInputWidget.oo-ui-widget-disabled textarea,
.oo-ui-textInputWidget.oo-ui-widget-disabled textarea:focus {
- color: #ccc;
- text-shadow: 0 1px 1px #fff;
- border-color: #ddd;
- background-color: #f3f3f3;
+ color: #cccccc;
+ text-shadow: 0 1px 1px #ffffff;
+ border-color: #dddddd;
+ background-color: #f3f3f3;
}
.oo-ui-textInputWidget .oo-ui-iconElement-icon,
.oo-ui-textInputWidget .oo-ui-indicatorElement-indicator {
- opacity: 0.8;
+ opacity: 0.8;
}
.oo-ui-textInputWidget.oo-ui-iconElement input,
.oo-ui-textInputWidget.oo-ui-iconElement textarea {
- padding-left: 2em;
+ padding-left: 2em;
}
.oo-ui-textInputWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
- width: 2em;
- background-position: right center;
+ width: 2em;
+ background-position: right center;
}
.oo-ui-textInputWidget.oo-ui-indicatorElement input,
.oo-ui-textInputWidget.oo-ui-indicatorElement textarea {
- padding-right: 1.5em;
+ padding-right: 1.5em;
}
.oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
- width: 1.5em;
- background-position: left center;
+ width: 1.5em;
+ background-position: left center;
}
.oo-ui-menuWidget {
- position: absolute;
- background: #fff;
- margin-top: -1px;
- border: solid 1px #ccc;
- border-radius: 0 0 0.25em 0.25em;
- box-shadow: 0 0.15em 1em 0 rgba(0, 0, 0, 0.2);
+ position: absolute;
+ background: #ffffff;
+ margin-top: -1px;
+ border: solid 1px #cccccc;
+ border-radius: 0 0 0.25em 0.25em;
+ box-shadow: 0 0.15em 1em 0 rgba(0, 0, 0, 0.2);
}
.oo-ui-menuWidget input {
- position: absolute;
- width: 0;
- height: 0;
- overflow: hidden;
- opacity: 0;
+ position: absolute;
+ width: 0;
+ height: 0;
+ overflow: hidden;
+ opacity: 0;
}
.oo-ui-menuItemWidget {
- position: relative;
+ position: relative;
}
.oo-ui-menuItemWidget .oo-ui-iconElement-icon {
- display: none;
+ display: none;
}
.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
- background-color: transparent;
+ background-color: transparent;
}
.oo-ui-menuItemWidget.oo-ui-optionWidget-selected .oo-ui-iconElement-icon {
- display: block;
+ display: block;
}
.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
- background-color: transparent;
+ background-color: transparent;
}
.oo-ui-menuItemWidget.oo-ui-optionWidget-highlighted,
.oo-ui-menuItemWidget.oo-ui-optionWidget-highlighted.oo-ui-optionWidget-selected {
- background-color: #e1f3ff;
+ background-color: #e1f3ff;
}
.oo-ui-menuSectionItemWidget {
- cursor: default;
- padding: 0.33em 0.75em;
- color: #888;
+ cursor: default;
+ padding: 0.33em 0.75em;
+ color: #888888;
}
.oo-ui-inlineMenuWidget {
- position: relative;
- display: inline-block;
- margin: 0.25em 0;
- min-width: 20em;
+ position: relative;
+ display: inline-block;
+ margin: 0.25em 0;
+ min-width: 20em;
}
.oo-ui-inlineMenuWidget-handle {
- width: 100%;
- display: inline-block;
- cursor: pointer;
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
+ width: 100%;
+ display: inline-block;
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
}
.oo-ui-inlineMenuWidget-handle .oo-ui-indicatorElement-indicator,
.oo-ui-inlineMenuWidget-handle .oo-ui-iconElement-icon {
- position: absolute;
- background-position: center center;
- background-repeat: no-repeat;
+ position: absolute;
+ background-position: center center;
+ background-repeat: no-repeat;
}
.oo-ui-inlineMenuWidget .oo-ui-menuWidget {
- z-index: 1;
- width: 100%;
+ z-index: 1;
+ width: 100%;
}
.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-inlineMenuWidget-handle {
- cursor: default;
+ cursor: default;
}
.oo-ui-inlineMenuWidget-handle {
- height: 2.5em;
- border: solid 1px rgba(0, 0, 0, 0.1);
- border-radius: 0.25em;
+ height: 2.5em;
+ border: solid 1px rgba(0, 0, 0, 0.1);
+ border-radius: 0.25em;
}
.oo-ui-inlineMenuWidget-handle:hover {
- border-color: rgba(0, 0, 0, 0.2);
+ border-color: rgba(0, 0, 0, 0.2);
}
.oo-ui-inlineMenuWidget-handle .oo-ui-indicatorElement-indicator {
- right: 0;
+ right: 0;
}
.oo-ui-inlineMenuWidget-handle .oo-ui-iconElement-icon {
- left: 0.25em;
+ left: 0.25em;
}
.oo-ui-inlineMenuWidget-handle .oo-ui-labelElement-label {
- line-height: 2.5em;
- margin: 0 0.5em;
+ line-height: 2.5em;
+ margin: 0 0.5em;
}
.oo-ui-inlineMenuWidget-handle .oo-ui-indicatorElement-indicator,
.oo-ui-inlineMenuWidget-handle .oo-ui-iconElement-icon {
- top: 0;
- width: 2.5em;
- height: 2.5em;
- opacity: 0.8;
+ top: 0;
+ width: 2.5em;
+ height: 2.5em;
+ opacity: 0.8;
}
.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-inlineMenuWidget-handle {
- color: #ccc;
- text-shadow: 0 1px 1px #fff;
- border-color: #ddd;
- background-color: #f3f3f3;
+ color: #cccccc;
+ text-shadow: 0 1px 1px #ffffff;
+ border-color: #dddddd;
+ background-color: #f3f3f3;
}
.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator {
- opacity: 0.2;
+ opacity: 0.2;
}
.oo-ui-inlineMenuWidget.oo-ui-iconElement .oo-ui-inlineMenuWidget-handle .oo-ui-labelElement-label {
- margin-left: 3em;
+ margin-left: 3em;
}
.oo-ui-inlineMenuWidget.oo-ui-indicatorElement .oo-ui-inlineMenuWidget-handle .oo-ui-labelElement-label {
- margin-right: 2em;
+ margin-right: 2em;
}
.oo-ui-outlineItemWidget {
- position: relative;
- cursor: pointer;
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- font-size: 1.1em;
- padding: 0.75em;
+ position: relative;
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ font-size: 1.1em;
+ padding: 0.75em;
}
.oo-ui-outlineItemWidget.oo-ui-indicatorElement .oo-ui-labelElement-label {
- padding-right: 1.5em;
+ padding-right: 1.5em;
}
.oo-ui-outlineItemWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
- opacity: 0.5;
+ opacity: 0.5;
}
.oo-ui-outlineItemWidget-level-0 {
- padding-left: 3.5em;
+ padding-left: 3.5em;
}
.oo-ui-outlineItemWidget-level-0 .oo-ui-iconElement-icon {
- left: 1em;
+ left: 1em;
}
.oo-ui-outlineItemWidget-level-1 {
- padding-left: 5em;
+ padding-left: 5em;
}
.oo-ui-outlineItemWidget-level-1 .oo-ui-iconElement-icon {
- left: 2.5em;
+ left: 2.5em;
}
.oo-ui-outlineItemWidget-level-2 {
- padding-left: 6.5em;
+ padding-left: 6.5em;
}
.oo-ui-outlineItemWidget-level-2 .oo-ui-iconElement-icon {
- left: 4em;
+ left: 4em;
}
.oo-ui-selectWidget-depressed .oo-ui-outlineItemWidget.oo-ui-optionWidget-selected {
- background-color: #a7dcff;
- text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5);
+ background-color: #a7dcff;
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5);
}
.oo-ui-outlineItemWidget.oo-ui-flaggedElement-important {
- font-weight: bold;
+ font-weight: bold;
}
.oo-ui-outlineItemWidget.oo-ui-flaggedElement-placeholder {
- font-style: italic;
+ font-style: italic;
}
.oo-ui-outlineItemWidget.oo-ui-flaggedElement-empty .oo-ui-iconElement-icon {
- opacity: 0.5;
+ opacity: 0.5;
}
.oo-ui-outlineItemWidget.oo-ui-flaggedElement-empty .oo-ui-labelElement-label {
- color: #777;
+ color: #777777;
}
.oo-ui-outlineControlsWidget {
- height: 3em;
- background-color: #fff;
+ height: 3em;
+ background-color: #ffffff;
}
.oo-ui-outlineControlsWidget-items,
.oo-ui-outlineControlsWidget-movers {
- float: left;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
+ float: left;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
}
.oo-ui-outlineControlsWidget > .oo-ui-iconElement-icon {
- float: left;
- background-position: right center;
- background-repeat: no-repeat;
+ float: left;
+ background-position: right center;
+ background-repeat: no-repeat;
}
.oo-ui-outlineControlsWidget-items {
- float: left;
+ float: left;
}
.oo-ui-outlineControlsWidget-items .oo-ui-buttonWidget {
- float: left;
+ float: left;
}
.oo-ui-outlineControlsWidget-movers {
- float: right;
+ float: right;
}
.oo-ui-outlineControlsWidget-movers .oo-ui-buttonWidget {
- float: right;
+ float: right;
}
.oo-ui-outlineControlsWidget-items,
.oo-ui-outlineControlsWidget-movers {
- height: 2em;
- margin: 0.5em;
- padding: 0;
+ height: 2em;
+ margin: 0.5em;
+ padding: 0;
}
.oo-ui-outlineControlsWidget > .oo-ui-iconElement-icon {
- width: 1.5em;
- height: 2em;
- margin: 0.5em 0 0.5em 0.5em;
- opacity: 0.2;
+ width: 1.5em;
+ height: 2em;
+ margin: 0.5em 0 0.5em 0.5em;
+ opacity: 0.2;
}
.oo-ui-outlineControlsWidget-items {
- margin-left: 0;
+ margin-left: 0;
}
.oo-ui-comboBoxWidget > .oo-ui-selectWidget {
- z-index: 1;
- min-width: 20em;
+ z-index: 1;
+ min-width: 20em;
}
.oo-ui-comboBoxWidget > .oo-ui-selectWidget-handle {
- border: solid 1px rgba(0, 0, 0, 0.1);
- border-radius: 0.25em;
+ border: solid 1px rgba(0, 0, 0, 0.1);
+ border-radius: 0.25em;
}
.oo-ui-comboBoxWidget > .oo-ui-selectWidget-handle:hover {
- border-color: rgba(0, 0, 0, 0.2);
+ border-color: rgba(0, 0, 0, 0.2);
}
.oo-ui-comboBoxWidget > .oo-ui-selectWidget.oo-ui-widget-disabled .oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator,
.oo-ui-comboBoxWidget > .oo-ui-selectWidget-empty .oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
- cursor: default;
- opacity: 0.2;
+ cursor: default;
+ opacity: 0.2;
}
.oo-ui-searchWidget-query {
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
}
.oo-ui-searchWidget-query .oo-ui-textInputWidget {
- width: 100%;
+ width: 100%;
}
.oo-ui-searchWidget-results {
- position: absolute;
- bottom: 0;
- left: 0;
- right: 0;
- overflow-x: hidden;
- overflow-y: auto;
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ overflow-x: hidden;
+ overflow-y: auto;
}
.oo-ui-searchWidget-query {
- height: 4em;
- padding: 0 1em;
- box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.2);
+ height: 4em;
+ padding: 0 1em;
+ box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.2);
}
.oo-ui-searchWidget-query .oo-ui-textInputWidget {
- margin: 0.75em 0;
+ margin: 0.75em 0;
}
.oo-ui-searchWidget-results {
- top: 4em;
- padding: 1em;
- line-height: 0;
+ top: 4em;
+ padding: 1em;
+ line-height: 0;
}
.oo-ui-window {
- line-height: 1em;
- /* Content div takes focus when opened, so hide outline */
+ line-height: 1em;
+ /* Content div takes focus when opened, so hide outline */
}
.oo-ui-window-frame {
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
}
.oo-ui-window-frame > iframe {
- width: 100%;
- height: 100%;
- margin: 0;
- padding: 0;
+ width: 100%;
+ height: 100%;
+ margin: 0;
+ padding: 0;
}
.oo-ui-window-content:focus {
- outline: none;
+ outline: none;
}
.oo-ui-window-head,
.oo-ui-window-foot {
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
}
.oo-ui-window-body {
- margin: 0;
- padding: 0;
- background: none;
+ margin: 0;
+ padding: 0;
+ background: none;
}
.oo-ui-window-overlay {
- position: absolute;
- top: 0;
- left: 0;
+ position: absolute;
+ top: 0;
+ left: 0;
}
.oo-ui-window-isolated {
- background-color: transparent;
- background-image: none;
- font-family: sans-serif;
- font-size: 0.8em;
+ background-color: transparent;
+ background-image: none;
+ font-family: sans-serif;
+ font-size: 0.8em;
}
.oo-ui-dialog-content > .oo-ui-window-head,
.oo-ui-dialog-content > .oo-ui-window-body,
.oo-ui-dialog-content > .oo-ui-window-foot {
- position: absolute;
- left: 0;
- right: 0;
- overflow: hidden;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
+ position: absolute;
+ left: 0;
+ right: 0;
+ overflow: hidden;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
}
.oo-ui-dialog-content > .oo-ui-window-head {
- z-index: 1;
- top: 0;
+ z-index: 1;
+ top: 0;
}
.oo-ui-dialog-content > .oo-ui-window-head.oo-ui-pendingElement-pending {
- background-image: /* @embed */ url(images/textures/pending.gif);
+ background-image: /* @embed */ url(images/textures/pending.gif);
}
.oo-ui-dialog-content > .oo-ui-window-body {
- z-index: 2;
- top: 0;
- bottom: 0;
+ z-index: 2;
+ top: 0;
+ bottom: 0;
}
.oo-ui-dialog-content > .oo-ui-window-foot {
- z-index: 1;
- bottom: 0;
+ z-index: 1;
+ bottom: 0;
}
.oo-ui-dialog-content > .oo-ui-window-overlay {
- z-index: 3;
+ z-index: 3;
}
.oo-ui-dialog-content > .oo-ui-window-body {
- box-shadow: 0 0 0.66em rgba(0, 0, 0, 0.25);
+ box-shadow: 0 0 0.66em rgba(0, 0, 0, 0.25);
}
.oo-ui-messageDialog-actions-horizontal {
- display: table;
- table-layout: fixed;
- width: 100%;
+ display: table;
+ table-layout: fixed;
+ width: 100%;
}
.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
- display: table-cell;
- width: 1%;
+ display: table-cell;
+ width: 1%;
}
.oo-ui-messageDialog-actions-vertical {
- display: block;
+ display: block;
}
.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
- display: block;
- overflow: hidden;
- text-overflow: ellipsis;
+ display: block;
+ overflow: hidden;
+ text-overflow: ellipsis;
}
.oo-ui-messageDialog-actions .oo-ui-actionWidget {
- position: relative;
- text-align: center;
+ position: relative;
+ text-align: center;
}
.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-buttonElement-button {
- display: block;
+ display: block;
}
.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labelElement-label {
- position: relative;
- top: auto;
- bottom: auto;
- display: inline;
- white-space: nowrap;
+ position: relative;
+ top: auto;
+ bottom: auto;
+ display: inline;
+ white-space: nowrap;
}
.oo-ui-messageDialog-content .oo-ui-window-body {
- box-shadow: 0 0 0.33em rgba(0, 0, 0, 0.33);
+ box-shadow: 0 0 0.33em rgba(0, 0, 0, 0.33);
}
.oo-ui-messageDialog-title,
.oo-ui-messageDialog-message {
- display: block;
- text-align: center;
- padding-top: 0.5em;
+ display: block;
+ text-align: center;
+ padding-top: 0.5em;
}
.oo-ui-messageDialog-title {
- font-size: 1.5em;
- line-height: 1em;
- color: #000;
+ font-size: 1.5em;
+ line-height: 1em;
+ color: #000000;
}
.oo-ui-messageDialog-message {
- font-size: 0.9em;
- line-height: 1.25em;
- color: #666;
+ font-size: 0.9em;
+ line-height: 1.25em;
+ color: #666666;
}
.oo-ui-messageDialog-message-verbose {
- font-size: 1.1em;
- line-height: 1.5em;
- text-align: left;
+ font-size: 1.1em;
+ line-height: 1.5em;
+ text-align: left;
}
.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
- border-right: solid 1px #e5e5e5;
+ border-right: solid 1px #e5e5e5;
}
.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget:last-child {
- border-right-width: 0;
+ border-right-width: 0;
}
.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
- border-bottom: solid 1px #e5e5e5;
+ border-bottom: solid 1px #e5e5e5;
}
.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget:last-child {
- border-bottom-width: 0;
+ border-bottom-width: 0;
}
.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labelElement-label {
- text-align: center;
- line-height: 3.4em;
- padding: 0 2em;
+ text-align: center;
+ line-height: 3.4em;
+ padding: 0 2em;
}
.oo-ui-messageDialog-actions .oo-ui-actionWidget:hover {
- background-color: rgba(0, 0, 0, 0.05);
+ background-color: rgba(0, 0, 0, 0.05);
}
.oo-ui-messageDialog-actions .oo-ui-actionWidget:active {
- background-color: rgba(0, 0, 0, 0.1);
+ background-color: rgba(0, 0, 0, 0.1);
}
.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-primary:hover {
- background-color: rgba(8, 126, 204, 0.05);
+ background-color: rgba(8, 126, 204, 0.05);
}
.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-primary:active {
- background-color: rgba(8, 126, 204, 0.1);
+ background-color: rgba(8, 126, 204, 0.1);
}
.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-labelElement-label {
- font-weight: bold;
+ font-weight: bold;
}
.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:hover {
- background-color: rgba(118, 171, 54, 0.05);
+ background-color: rgba(118, 171, 54, 0.05);
}
.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:active {
- background-color: rgba(118, 171, 54, 0.1);
+ background-color: rgba(118, 171, 54, 0.1);
}
.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:hover {
- background-color: rgba(212, 83, 83, 0.05);
+ background-color: rgba(212, 83, 83, 0.05);
}
.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:active {
- background-color: rgba(212, 83, 83, 0.1);
+ background-color: rgba(212, 83, 83, 0.1);
}
.oo-ui-processDialog-location {
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
}
.oo-ui-processDialog-title {
- display: inline;
- padding: 0;
+ display: inline;
+ padding: 0;
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget,
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget,
.oo-ui-processDialog-actions-other .oo-ui-actionWidget {
- white-space: nowrap;
+ white-space: nowrap;
}
.oo-ui-processDialog-actions-safe,
.oo-ui-processDialog-actions-primary {
- position: absolute;
- top: 0;
- bottom: 0;
+ position: absolute;
+ top: 0;
+ bottom: 0;
}
.oo-ui-processDialog-actions-safe {
- left: 0;
+ left: 0;
}
.oo-ui-processDialog-actions-primary {
- right: 0;
+ right: 0;
}
.oo-ui-processDialog-errors {
- display: none;
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- z-index: 2;
- overflow-x: hidden;
- overflow-y: auto;
+ display: none;
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ z-index: 2;
+ overflow-x: hidden;
+ overflow-y: auto;
}
.oo-ui-processDialog-content .oo-ui-window-head {
- height: 3.4em;
+ height: 3.4em;
}
.oo-ui-processDialog-content .oo-ui-window-body {
- top: 3.4em;
- box-shadow: 0 0 0.33em rgba(0, 0, 0, 0.33);
+ top: 3.4em;
+ box-shadow: 0 0 0.33em rgba(0, 0, 0, 0.33);
}
.oo-ui-processDialog-navigation {
- position: relative;
- height: 3.4em;
- padding: 0 1em;
+ position: relative;
+ height: 3.4em;
+ padding: 0 1em;
}
.oo-ui-processDialog-location {
- padding: 0.75em 0;
- height: 1.9em;
- cursor: default;
- text-align: center;
+ padding: 0.75em 0;
+ height: 1.9em;
+ cursor: default;
+ text-align: center;
}
.oo-ui-processDialog-title {
- font-weight: bold;
- line-height: 1.9em;
+ font-weight: bold;
+ line-height: 1.9em;
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-buttonElement-button,
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-buttonElement-button,
.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-buttonElement-button {
- padding-top: 0.75em;
- padding-bottom: 0.75em;
- min-width: 1.9em;
- min-height: 1.9em;
+ padding-top: 0.75em;
+ padding-bottom: 0.75em;
+ min-width: 1.9em;
+ min-height: 1.9em;
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-labelElement-label,
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-labelElement-label,
.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-labelElement-label {
- line-height: 1.9em;
- padding: 0 1em;
+ line-height: 1.9em;
+ padding: 0 1em;
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-iconElement-icon,
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-iconElement-icon,
.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-iconElement-icon {
- position: absolute;
- margin-top: -0.125em;
+ position: absolute;
+ margin-top: -0.125em;
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-framed,
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-framed,
.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-framed {
- margin: 0.75em 0 0.75em 0.75em;
+ margin: 0.75em 0 0.75em 0.75em;
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button,
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button,
.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
- padding: 0;
- vertical-align: middle;
+ padding: 0;
+ vertical-align: middle;
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget:hover,
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget:hover {
- background-color: rgba(0, 0, 0, 0.05);
+ background-color: rgba(0, 0, 0, 0.05);
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget:active,
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget:active {
- background-color: rgba(0, 0, 0, 0.1);
+ background-color: rgba(0, 0, 0, 0.1);
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-framed,
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-framed {
- margin: 0.75em;
+ margin: 0.75em;
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button,
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
- /* Adjust for border so text aligns with title */
- margin: -1px;
+ /* Adjust for border so text aligns with title */
+ margin: -1px;
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-primary:hover,
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-primary:hover {
- background-color: rgba(8, 126, 204, 0.05);
+ background-color: rgba(8, 126, 204, 0.05);
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-primary:active,
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-primary:active {
- background-color: rgba(8, 126, 204, 0.1);
+ background-color: rgba(8, 126, 204, 0.1);
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-labelElement-label,
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-labelElement-label {
- font-weight: bold;
+ font-weight: bold;
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:hover,
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:hover {
- background-color: rgba(118, 171, 54, 0.05);
+ background-color: rgba(118, 171, 54, 0.05);
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:active,
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:active {
- background-color: rgba(118, 171, 54, 0.1);
+ background-color: rgba(118, 171, 54, 0.1);
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:hover,
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:hover {
- background-color: rgba(212, 83, 83, 0.05);
+ background-color: rgba(212, 83, 83, 0.05);
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:active,
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:active {
- background-color: rgba(212, 83, 83, 0.1);
+ background-color: rgba(212, 83, 83, 0.1);
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
- left: 0.5em;
+ left: 0.5em;
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-labelElement-label {
- padding-left: 2.25em;
+ padding-left: 2.25em;
}
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
- right: 0.5em;
+ right: 0.5em;
}
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-labelElement-label {
- padding-right: 2.25em;
+ padding-right: 2.25em;
}
.oo-ui-processDialog > .oo-ui-window-frame {
- min-height: 5em;
+ min-height: 5em;
}
.oo-ui-processDialog-errors {
- background-color: rgba(255, 255, 255, 0.9);
- padding: 3em 3em 1.5em 3em;
- text-align: center;
+ background-color: rgba(255, 255, 255, 0.9);
+ padding: 3em 3em 1.5em 3em;
+ text-align: center;
}
.oo-ui-processDialog-errors .oo-ui-buttonWidget {
- margin: 2em 1em 2em 1em;
+ margin: 2em 1em 2em 1em;
}
.oo-ui-processDialog-errors-title {
- font-size: 1.5em;
- color: #000;
- margin-bottom: 2em;
+ font-size: 1.5em;
+ color: #000000;
+ margin-bottom: 2em;
}
.oo-ui-processDialog-error {
- text-align: left;
- margin: 1em;
- padding: 1em;
- border: solid 1px #ff9e9e;
- background-color: #fff7f7;
- border-radius: 0.25em;
+ text-align: left;
+ margin: 1em;
+ padding: 1em;
+ border: solid 1px #ff9e9e;
+ background-color: #fff7f7;
+ border-radius: 0.25em;
}
.oo-ui-windowManager-modal > .oo-ui-dialog {
- position: fixed;
- width: 0;
- height: 0;
- overflow: hidden;
+ position: fixed;
+ width: 0;
+ height: 0;
+ overflow: hidden;
}
.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup {
- width: auto;
- height: auto;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- padding: 1em;
+ width: auto;
+ height: auto;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ padding: 1em;
}
.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup > .oo-ui-window-frame {
- position: absolute;
- right: 0;
- left: 0;
- margin: auto;
- overflow: hidden;
- max-width: 100%;
- max-height: 100%;
+ position: absolute;
+ right: 0;
+ left: 0;
+ margin: auto;
+ overflow: hidden;
+ max-width: 100%;
+ max-height: 100%;
}
.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup > .oo-ui-window-frame > iframe {
- width: 100%;
- height: 100%;
+ width: 100%;
+ height: 100%;
}
.oo-ui-windowManager-fullscreen > .oo-ui-dialog > .oo-ui-window-frame {
- width: 100%;
- height: 100%;
- top: 0;
- bottom: 0;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ bottom: 0;
}
.oo-ui-windowManager-modal > .oo-ui-dialog {
- background-color: rgba(255, 255, 255, 0.5);
- opacity: 0;
- -webkit-transition: opacity 250ms ease-in-out;
- -moz-transition: opacity 250ms ease-in-out;
- -ms-transition: opacity 250ms ease-in-out;
- -o-transition: opacity 250ms ease-in-out;
- transition: opacity 250ms ease-in-out;
+ background-color: rgba(255, 255, 255, 0.5);
+ opacity: 0;
+ -webkit-transition: opacity 250ms ease-in-out;
+ -moz-transition: opacity 250ms ease-in-out;
+ -ms-transition: opacity 250ms ease-in-out;
+ -o-transition: opacity 250ms ease-in-out;
+ transition: opacity 250ms ease-in-out;
}
.oo-ui-windowManager-modal > .oo-ui-dialog > .oo-ui-window-frame {
- top: 1em;
- bottom: 1em;
- background-color: #fff;
- -webkit-transform: scale(0.5);
- -moz-transform: scale(0.5);
- -ms-transform: scale(0.5);
- -o-transform: scale(0.5);
- transform: scale(0.5);
- -webkit-transition: all 250ms ease-in-out;
- -moz-transition: all 250ms ease-in-out;
- -ms-transition: all 250ms ease-in-out;
- -o-transition: all 250ms ease-in-out;
- transition: all 250ms ease-in-out;
+ top: 1em;
+ bottom: 1em;
+ background-color: #ffffff;
+ -webkit-transform: scale(0.5);
+ -moz-transform: scale(0.5);
+ -ms-transform: scale(0.5);
+ -o-transform: scale(0.5);
+ transform: scale(0.5);
+ -webkit-transition: all 250ms ease-in-out;
+ -moz-transition: all 250ms ease-in-out;
+ -ms-transition: all 250ms ease-in-out;
+ -o-transition: all 250ms ease-in-out;
+ transition: all 250ms ease-in-out;
}
.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready {
- opacity: 1;
+ opacity: 1;
}
.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready > .oo-ui-window-frame {
- -webkit-transform: scale(1);
- -moz-transform: scale(1);
- -ms-transform: scale(1);
- -o-transform: scale(1);
- transform: scale(1);
+ -webkit-transform: scale(1);
+ -moz-transform: scale(1);
+ -ms-transform: scale(1);
+ -o-transform: scale(1);
+ transform: scale(1);
}
.oo-ui-windowManager-modal.oo-ui-windowManager-floating > .oo-ui-dialog > .oo-ui-window-frame {
- border: solid 1px #ccc;
- border-radius: 0.5em;
- box-shadow: 0 0.2em 1em rgba(0, 0, 0, 0.3);
+ border: solid 1px #cccccc;
+ border-radius: 0.5em;
+ box-shadow: 0 0.2em 1em rgba(0, 0, 0, 0.3);
}
/*!
- * OOjs UI v0.1.0-pre (ec785c2c64)
+ * OOjs UI v0.1.0-pre (f2c3f12959)
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011–2014 OOjs Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2014-09-18T01:30:17Z
+ * Date: 2014-09-18T23:22:20Z
*/
/*
* Blank theme mixins.
*/
/* @noflip */
.oo-ui-rtl {
- direction: rtl;
+ direction: rtl;
}
/* @noflip */
.oo-ui-ltr {
- direction: ltr;
+ direction: ltr;
}
.oo-ui-buttonElement > .oo-ui-buttonElement-button {
- cursor: pointer;
- display: inline-block;
- vertical-align: middle;
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
+ cursor: pointer;
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
}
.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
- display: none;
+ display: none;
}
.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
- display: none;
+ display: none;
}
.oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
- cursor: default;
+ cursor: default;
}
.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
- display: inline-block;
- vertical-align: middle;
- background-position: center center;
- background-repeat: no-repeat;
+ display: inline-block;
+ vertical-align: middle;
+ background-position: center center;
+ background-repeat: no-repeat;
}
.oo-ui-buttonElement-frameless {
- display: inline-block;
- position: relative;
+ display: inline-block;
+ position: relative;
}
.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
- display: inline-block;
- vertical-align: middle;
+ display: inline-block;
+ vertical-align: middle;
}
.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
- display: inline-block;
- vertical-align: top;
- text-align: center;
+ display: inline-block;
+ vertical-align: top;
+ text-align: center;
}
.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
- display: inline-block;
- vertical-align: middle;
+ display: inline-block;
+ vertical-align: middle;
}
.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button,
.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
- cursor: default;
+ cursor: default;
}
.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
- margin-left: 0;
+ margin-left: 0;
}
.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
- margin-right: -0.75em;
+ margin-right: -0.75em;
}
.oo-ui-buttonElement.oo-ui-indicatorElement .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
.oo-ui-buttonElement.oo-ui-iconElement .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
- width: 3.35em;
- height: 3.35em;
- background-size: 2em auto;
+ width: 3.35em;
+ height: 3.35em;
+ background-size: 2em auto;
}
.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
- margin-left: 0.25em;
+ margin-left: 0.25em;
}
.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
- line-height: 1.9em;
+ line-height: 1.9em;
}
.oo-ui-clippableElement-clippable {
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
}
.oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous .oo-ui-panelLayout-scrollable {
- overflow-y: hidden;
+ overflow-y: hidden;
}
.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
- width: 100%;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
+ width: 100%;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
}
.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-scrollable {
- overflow-y: auto;
+ overflow-y: auto;
}
.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-padded {
- padding: 2em;
+ padding: 2em;
}
.oo-ui-bookletLayout-outlinePanel-editable .oo-ui-outlineWidget {
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 3em;
- overflow-y: auto;
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 3em;
+ overflow-y: auto;
}
.oo-ui-bookletLayout-outlinePanel .oo-ui-outlineControlsWidget {
- position: absolute;
- bottom: 0;
- left: 0;
- right: 0;
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ right: 0;
}
.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
- padding: 0 0 1em;
+ padding: 0 0 1em;
}
.oo-ui-fieldLayout {
- margin-bottom: 1em;
+ margin-bottom: 1em;
}
.oo-ui-fieldLayout:before,
.oo-ui-fieldLayout:after {
- content: " ";
- display: table;
+ content: " ";
+ display: table;
}
.oo-ui-fieldLayout:after {
- clear: both;
+ clear: both;
}
.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-labelElement-label,
.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labelElement-label {
- display: block;
- float: left;
+ display: block;
+ float: left;
}
.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-field,
.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-field {
- display: block;
- float: left;
+ display: block;
+ float: left;
}
.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labelElement-label {
- text-align: right;
+ text-align: right;
}
.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-labelElement-label {
- display: inline-block;
- vertical-align: middle;
+ display: inline-block;
+ vertical-align: middle;
}
.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-field {
- display: inline-block;
- vertical-align: middle;
+ display: inline-block;
+ vertical-align: middle;
}
.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-labelElement-label {
- display: inline-block;
+ display: inline-block;
}
.oo-ui-fieldLayout > .oo-ui-popupButtonWidget > .oo-ui-popupWidget > .oo-ui-popupWidget-popup {
- z-index: 1;
+ z-index: 1;
}
.oo-ui-fieldLayout .oo-ui-fieldLayout-help {
- float: right;
+ float: right;
}
.oo-ui-fieldLayout .oo-ui-fieldLayout-help-content {
- padding: 0.5em 0.75em;
+ padding: 0.5em 0.75em;
}
.oo-ui-fieldLayout:last-child {
- margin-bottom: 0;
+ margin-bottom: 0;
}
.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-labelElement-label,
.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labelElement-label {
- padding-top: 0.5em;
- margin-right: 5%;
- width: 35%;
+ padding-top: 0.5em;
+ margin-right: 5%;
+ width: 35%;
}
.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-field,
.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-field {
- width: 60%;
+ width: 60%;
}
.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-labelElement-label {
- padding: 0.75em 0.5em 0.5em 0.5em;
+ padding: 0.75em 0.5em 0.5em 0.5em;
}
.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-field {
- padding: 0.5em 0;
+ padding: 0.5em 0;
}
.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-labelElement-label {
- padding: 0.5em 0;
+ padding: 0.5em 0;
}
.oo-ui-fieldLayout > .oo-ui-popupButtonWidget > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
- margin-top: 0.25em;
+ margin-top: 0.25em;
}
.oo-ui-fieldLayout-disabled .oo-ui-labelElement-label {
- color: #ccc;
+ color: #cccccc;
}
.oo-ui-fieldsetLayout {
- position: relative;
- margin: 0;
- padding: 0;
+ position: relative;
+ margin: 0;
+ padding: 0;
}
.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
- display: block;
- position: absolute;
- background-position: center center;
- background-repeat: no-repeat;
+ display: block;
+ position: absolute;
+ background-position: center center;
+ background-repeat: no-repeat;
}
.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-labelElement-label {
- display: inline-block;
+ display: inline-block;
}
.oo-ui-fieldsetLayout + .oo-ui-fieldsetLayout {
- margin-top: 2em;
+ margin-top: 2em;
}
.oo-ui-fieldsetLayout > .oo-ui-labelElement-label {
- margin-bottom: 0.5em;
- padding: 0.25em 0;
+ margin-bottom: 0.5em;
+ padding: 0.25em 0;
}
.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-labelElement-label {
- padding-left: 1.75em;
- line-height: 1.33em;
+ padding-left: 1.75em;
+ line-height: 1.33em;
}
.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
- left: 0;
- top: 0.25em;
- width: 2em;
- height: 2em;
+ left: 0;
+ top: 0.25em;
+ width: 2em;
+ height: 2em;
}
.oo-ui-gridLayout {
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
}
.oo-ui-panelLayout {
- position: relative;
- padding: 1em 3.35em;
+ position: relative;
+ padding: 1em 3.35em;
}
.oo-ui-panelLayout-scrollable {
- overflow-y: auto;
+ overflow-y: auto;
}
.oo-ui-panelLayout-expanded {
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
}
.oo-ui-stackLayout > .oo-ui-panelLayout {
- display: none;
+ display: none;
}
.oo-ui-stackLayout-continuous > .oo-ui-panelLayout {
- display: block;
- position: relative;
+ display: block;
+ position: relative;
}
.oo-ui-popupTool .oo-ui-popupWidget-popup,
.oo-ui-popupTool .oo-ui-popupWidget-anchor {
- z-index: 4;
+ z-index: 4;
}
.oo-ui-popupTool .oo-ui-popupWidget {
- margin-left: 1.25em;
- font-size: 0.8em;
+ margin-left: 1.25em;
+ font-size: 0.8em;
}
.oo-ui-toolGroup {
- display: inline-block;
- vertical-align: middle;
- margin: 0.3em;
+ display: inline-block;
+ vertical-align: middle;
+ margin: 0.3em;
}
.oo-ui-toolGroup-empty {
- display: none;
+ display: none;
}
.oo-ui-toolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
- background-position: center center;
- background-repeat: no-repeat;
+ background-position: center center;
+ background-repeat: no-repeat;
}
.oo-ui-barToolGroup > .oo-ui-iconElement-icon,
.oo-ui-barToolGroup > .oo-ui-labelElement-label {
- display: none;
+ display: none;
}
.oo-ui-barToolGroup .oo-ui-tool {
- display: inline-block;
- position: relative;
- vertical-align: top;
+ display: inline-block;
+ position: relative;
+ vertical-align: top;
}
.oo-ui-barToolGroup .oo-ui-tool-link {
- display: block;
+ display: block;
}
.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
- display: block;
+ display: block;
}
.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-tool-title {
- display: none;
+ display: none;
}
.oo-ui-barToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
- cursor: default;
+ cursor: default;
}
.oo-ui-barToolGroup .oo-ui-tool-title,
.oo-ui-barToolGroup .oo-ui-tool-accel {
- display: none;
+ display: none;
}
.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-link {
- cursor: pointer;
+ cursor: pointer;
}
.oo-ui-barToolGroup .oo-ui-tool-link {
- height: 1.5em;
- padding: 0.25em;
+ height: 1.5em;
+ padding: 0.25em;
}
.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
- height: 1.5em;
- width: 1.5em;
+ height: 1.5em;
+ width: 1.5em;
}
.oo-ui-popupToolGroup {
- position: relative;
- height: 2em;
- min-width: 2.5em;
+ position: relative;
+ height: 2em;
+ min-width: 2.5em;
}
.oo-ui-popupToolGroup-handle {
- display: block;
- cursor: pointer;
+ display: block;
+ cursor: pointer;
}
.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator,
.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
- position: absolute;
- background-position: center center;
- background-repeat: no-repeat;
+ position: absolute;
+ background-position: center center;
+ background-repeat: no-repeat;
}
.oo-ui-popupToolGroup.oo-ui-widget-disabled .oo-ui-popupToolGroup-handle {
- cursor: default;
+ cursor: default;
}
.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
- display: none;
- position: absolute;
- z-index: 4;
+ display: none;
+ position: absolute;
+ z-index: 4;
}
.oo-ui-popupToolGroup .oo-ui-toolGroup-tools .oo-ui-iconElement-icon {
- background-repeat: no-repeat;
- background-position: center center;
+ background-repeat: no-repeat;
+ background-position: center center;
}
.oo-ui-popupToolGroup-active.oo-ui-widget-enabled > .oo-ui-toolGroup-tools {
- display: block;
+ display: block;
}
.oo-ui-popupToolGroup-left > .oo-ui-toolGroup-tools {
- left: 0;
+ left: 0;
}
.oo-ui-popupToolGroup-right > .oo-ui-toolGroup-tools {
- right: 0;
+ right: 0;
}
.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
- display: inline-block;
- vertical-align: middle;
+ display: inline-block;
+ vertical-align: middle;
}
.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
- display: inline-block;
- vertical-align: middle;
+ display: inline-block;
+ vertical-align: middle;
}
.oo-ui-popupToolGroup .oo-ui-tool-accel {
- display: none;
+ display: none;
}
.oo-ui-popupToolGroup.oo-ui-indicatorElement.oo-ui-iconElement {
- min-width: 3.5em;
+ min-width: 3.5em;
}
.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator,
.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
- top: 0;
- width: 2em;
- height: 2em;
+ top: 0;
+ width: 2em;
+ height: 2em;
}
.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator {
- right: 0;
+ right: 0;
}
.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
- left: 0.25em;
+ left: 0.25em;
}
.oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
- line-height: 2.6em;
- font-size: 0.8em;
- margin: 0 1em;
+ line-height: 2.6em;
+ font-size: 0.8em;
+ margin: 0 1em;
}
.oo-ui-popupToolGroup-header {
- line-height: 2.6em;
- font-size: 0.8em;
- margin: 0 0.6em;
- font-weight: bold;
+ line-height: 2.6em;
+ font-size: 0.8em;
+ margin: 0 0.6em;
+ font-weight: bold;
}
.oo-ui-popupToolGroup.oo-ui-iconElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
- margin-left: 3em;
+ margin-left: 3em;
}
.oo-ui-popupToolGroup.oo-ui-indicatorElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
- margin-right: 2.25em;
+ margin-right: 2.25em;
}
.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
- top: 2.3em;
- margin: 0 -1px;
- border: solid 1px #dddddd;
- background-color: white;
+ top: 2.3em;
+ margin: 0 -1px;
+ border: solid 1px #dddddd;
+ background-color: white;
}
.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
- height: 2em;
- width: 2em;
- margin-right: 0.25em;
+ height: 2em;
+ width: 2em;
+ margin-right: 0.25em;
}
.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
- line-height: 2em;
- font-size: 0.8em;
+ line-height: 2em;
+ font-size: 0.8em;
}
.oo-ui-listToolGroup .oo-ui-tool {
- display: inline-block;
- width: 100%;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
+ display: inline-block;
+ width: 100%;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
}
.oo-ui-listToolGroup .oo-ui-tool-link {
- display: block;
- cursor: pointer;
- white-space: nowrap;
+ display: block;
+ cursor: pointer;
+ white-space: nowrap;
}
.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
- cursor: default;
+ cursor: default;
}
.oo-ui-listToolGroup .oo-ui-toolGroup-tools {
- padding: 0.25em;
+ padding: 0.25em;
}
.oo-ui-listToolGroup .oo-ui-tool-link {
- padding-right: 0.5em;
+ padding-right: 0.5em;
}
.oo-ui-menuToolGroup .oo-ui-tool {
- display: block;
+ display: block;
}
.oo-ui-menuToolGroup .oo-ui-tool-link {
- display: block;
- cursor: pointer;
- white-space: nowrap;
+ display: block;
+ cursor: pointer;
+ white-space: nowrap;
}
.oo-ui-menuToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
- background-image: none;
+ background-image: none;
}
.oo-ui-menuToolGroup .oo-ui-tool-active .oo-ui-tool-link .oo-ui-iconElement-icon {
- background-image: /* @embed */ url(images/icons/check.svg);
+ background-image: /* @embed */ url(images/icons/check.svg);
}
.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
- cursor: default;
+ cursor: default;
}
.oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle {
- min-width: 8em;
+ min-width: 8em;
}
.oo-ui-menuToolGroup .oo-ui-toolGroup-tools {
- padding: 0.25em 0 0.25em 0;
+ padding: 0.25em 0 0.25em 0;
}
.oo-ui-menuToolGroup .oo-ui-tool-link {
- padding: 0 1em 0 0.25em;
+ padding: 0 1em 0 0.25em;
}
.oo-ui-toolbar {
- clear: both;
+ clear: both;
}
.oo-ui-toolbar-bar {
- line-height: 1em;
+ line-height: 1em;
}
.oo-ui-toolbar-actions {
- float: right;
+ float: right;
}
.oo-ui-toolbar-tools {
- display: inline;
+ display: inline;
}
.oo-ui-toolbar-tools,
.oo-ui-toolbar-actions,
.oo-ui-toolbar-shadow {
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
}
.oo-ui-toolbar-actions .oo-ui-popupWidget {
- -webkit-touch-callout: default;
- -webkit-user-select: all;
- -moz-user-select: all;
- -ms-user-select: all;
- user-select: all;
+ -webkit-touch-callout: default;
+ -webkit-user-select: all;
+ -moz-user-select: all;
+ -ms-user-select: all;
+ user-select: all;
}
.oo-ui-toolbar-shadow {
- background-position: left top;
- background-repeat: repeat-x;
- position: absolute;
- width: 100%;
- pointer-events: none;
+ background-position: left top;
+ background-repeat: repeat-x;
+ position: absolute;
+ width: 100%;
+ pointer-events: none;
}
.oo-ui-toolbar-bar {
- border-bottom: solid 1px #dddddd;
- background: white;
+ border-bottom: solid 1px #dddddd;
+ background: white;
}
.oo-ui-toolbar-bar .oo-ui-toolbar-bar {
- border: none;
- background: none;
+ border: none;
+ background: none;
}
.oo-ui-selectWidget {
- margin: 0;
- padding: 0;
+ margin: 0;
+ padding: 0;
}
.oo-ui-optionWidget {
- position: relative;
- display: block;
- cursor: pointer;
- padding: 0.8em 1em 0.8em 3.35em;
- border: none;
- font-weight: bold;
+ position: relative;
+ display: block;
+ cursor: pointer;
+ padding: 0.8em 1em 0.8em 3.35em;
+ border: none;
+ font-weight: bold;
}
.oo-ui-optionWidget.oo-ui-widget-disabled {
- cursor: default;
+ cursor: default;
}
.oo-ui-optionWidget .oo-ui-labelElement-label {
- display: block;
- white-space: nowrap;
- text-overflow: ellipsis;
- overflow: hidden;
+ display: block;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
}
.oo-ui-optionWidget .oo-ui-labelElement-label {
- line-height: 1.5em;
+ line-height: 1.5em;
}
.oo-ui-optionWidget.oo-ui-indicatorElement .oo-ui-labelElement-label {
- padding-right: 1.5em;
+ padding-right: 1.5em;
}
.oo-ui-optionWidget-level-0 {
- padding-left: 3.5em;
+ padding-left: 3.5em;
}
.oo-ui-optionWidget-level-0 .oo-ui-iconElement-icon {
- left: 1em;
+ left: 1em;
}
.oo-ui-optionWidget-level-1 {
- padding-left: 5em;
+ padding-left: 5em;
}
.oo-ui-optionWidget-level-1 .oo-ui-iconElement-icon {
- left: 2.5em;
+ left: 2.5em;
}
.oo-ui-optionWidget-level-2 {
- padding-left: 6.5em;
+ padding-left: 6.5em;
}
.oo-ui-optionWidget-level-2 .oo-ui-iconElement-icon {
- left: 4em;
+ left: 4em;
}
.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon,
.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
- position: absolute;
- background-repeat: no-repeat;
- background-position: center center;
+ position: absolute;
+ background-repeat: no-repeat;
+ background-position: center center;
}
.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon,
.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
- top: 50%;
- width: 2em;
- height: 2em;
- margin-top: -1em;
+ top: 50%;
+ width: 2em;
+ height: 2em;
+ margin-top: -1em;
}
.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon {
- left: 0.5em;
+ left: 0.5em;
}
.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
- right: 0.5em;
+ right: 0.5em;
}
.oo-ui-buttonSelectWidget {
- display: inline-block;
- white-space: nowrap;
+ display: inline-block;
+ white-space: nowrap;
}
.oo-ui-buttonOptionWidget {
- display: inline-block;
- padding: 0;
- background-color: transparent;
+ display: inline-block;
+ padding: 0;
+ background-color: transparent;
}
.oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
- position: relative;
+ position: relative;
}
.oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
.oo-ui-buttonOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
- position: static;
- display: inline-block;
- vertical-align: middle;
+ position: static;
+ display: inline-block;
+ vertical-align: middle;
}
.oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
- height: 1.9em;
+ height: 1.9em;
}
.oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
.oo-ui-buttonOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
- height: 1.9em;
- margin-top: 0;
+ height: 1.9em;
+ margin-top: 0;
}
.oo-ui-labelWidget {
- display: inline-block;
- padding: 0.5em 0;
+ display: inline-block;
+ padding: 0.5em 0;
}
.oo-ui-iconWidget {
- display: inline-block;
- vertical-align: middle;
- background-position: center center;
- background-repeat: no-repeat;
- line-height: 2.5em;
- height: 1.9em;
- width: 1.9em;
- opacity: 0.8;
+ display: inline-block;
+ vertical-align: middle;
+ background-position: center center;
+ background-repeat: no-repeat;
+ line-height: 2.5em;
+ height: 1.9em;
+ width: 1.9em;
+ opacity: 0.8;
}
.oo-ui-iconWidget.oo-ui-widget-disabled {
- opacity: 0.2;
+ opacity: 0.2;
}
.oo-ui-indicatorWidget {
- display: inline-block;
- vertical-align: middle;
- background-position: center center;
- background-repeat: no-repeat;
- line-height: 2.5em;
- height: 1.9em;
- width: 1.9em;
- opacity: 0.8;
+ display: inline-block;
+ vertical-align: middle;
+ background-position: center center;
+ background-repeat: no-repeat;
+ line-height: 2.5em;
+ height: 1.9em;
+ width: 1.9em;
+ opacity: 0.8;
}
.oo-ui-indicatorWidget.oo-ui-widget-disabled {
- opacity: 0.2;
+ opacity: 0.2;
}
.oo-ui-buttonWidget {
- display: inline-block;
- vertical-align: middle;
+ display: inline-block;
+ vertical-align: middle;
}
.oo-ui-buttonGroupWidget {
- border-radius: 0.3em;
+ border-radius: 0.3em;
}
.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
- border-radius: 0;
- margin-bottom: -1px;
- margin-left: -1px;
+ border-radius: 0;
+ margin-bottom: -1px;
+ margin-left: -1px;
}
.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:first-child .oo-ui-buttonElement-button {
- border-bottom-left-radius: 0.3em;
- border-top-left-radius: 0.3em;
- margin-left: 0;
+ border-bottom-left-radius: 0.3em;
+ border-top-left-radius: 0.3em;
+ margin-left: 0;
}
.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:last-child .oo-ui-buttonElement-button {
- border-bottom-right-radius: 0.3em;
- border-top-right-radius: 0.3em;
+ border-bottom-right-radius: 0.3em;
+ border-top-right-radius: 0.3em;
}
.oo-ui-toggleSwitchWidget {
- position: relative;
- display: inline-block;
- vertical-align: middle;
- overflow: hidden;
- cursor: pointer;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- -webkit-transform: translateZ(0px);
- -moz-transform: translateZ(0px);
- -ms-transform: translateZ(0px);
- -o-transform: translateZ(0px);
- transform: translateZ(0px);
- height: 2em;
- width: 4em;
+ position: relative;
+ display: inline-block;
+ vertical-align: middle;
+ overflow: hidden;
+ cursor: pointer;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ -webkit-transform: translateZ(0px);
+ -moz-transform: translateZ(0px);
+ -ms-transform: translateZ(0px);
+ -o-transform: translateZ(0px);
+ transform: translateZ(0px);
+ height: 2em;
+ width: 4em;
}
.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
- cursor: default;
+ cursor: default;
}
.oo-ui-toggleSwitchWidget-grip {
- position: absolute;
- display: block;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
+ position: absolute;
+ display: block;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
}
.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow {
- position: absolute;
- top: 0;
- bottom: 0;
- right: 0;
- left: 0;
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ right: 0;
+ left: 0;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
}
.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
- display: none;
+ display: none;
}
.oo-ui-toggleSwitchWidget-grip {
- top: 0.25em;
- left: 0.25em;
- width: 1.5em;
- height: 1.5em;
- margin-top: -1px;
- -webkit-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
- -moz-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
- -ms-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
- -o-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
- transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
+ top: 0.25em;
+ left: 0.25em;
+ width: 1.5em;
+ height: 1.5em;
+ margin-top: -1px;
+ -webkit-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
+ -moz-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
+ -ms-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
+ -o-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
+ transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
}
.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow {
- -webkit-transition: opacity 200ms ease-in-out;
- -moz-transition: opacity 200ms ease-in-out;
- -ms-transition: opacity 200ms ease-in-out;
- -o-transition: opacity 200ms ease-in-out;
- transition: opacity 200ms ease-in-out;
+ -webkit-transition: opacity 200ms ease-in-out;
+ -moz-transition: opacity 200ms ease-in-out;
+ -ms-transition: opacity 200ms ease-in-out;
+ -o-transition: opacity 200ms ease-in-out;
+ transition: opacity 200ms ease-in-out;
}
.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip {
- left: 2.25em;
- margin-left: -2px;
+ left: 2.25em;
+ margin-left: -2px;
}
.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-grip {
- left: 0.25em;
- margin-left: 0;
+ left: 0.25em;
+ margin-left: 0;
}
.oo-ui-actionWidget.oo-ui-pendingElement-pending {
- background-image: /* @embed */ url(images/textures/pending.gif);
+ background-image: /* @embed */ url(images/textures/pending.gif);
}
.oo-ui-popupWidget-popup {
- position: absolute;
- overflow: hidden;
- z-index: 1;
+ position: absolute;
+ overflow: hidden;
+ z-index: 1;
}
.oo-ui-popupWidget-anchor {
- display: none;
- z-index: 1;
+ display: none;
+ z-index: 1;
}
.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor {
- display: block;
- position: absolute;
- background-repeat: no-repeat;
+ display: block;
+ position: absolute;
+ background-repeat: no-repeat;
}
.oo-ui-popupWidget-head {
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
}
.oo-ui-popupWidget-head .oo-ui-buttonWidget {
- float: right;
+ float: right;
}
.oo-ui-popupWidget-head .oo-ui-labelElement-label {
- float: left;
- cursor: default;
+ float: left;
+ cursor: default;
}
.oo-ui-popupWidget-body {
- clear: both;
- overflow: hidden;
+ clear: both;
+ overflow: hidden;
}
.oo-ui-popupWidget-anchored .oo-ui-popupWidget-popup {
- margin-top: 7px;
+ margin-top: 7px;
}
.oo-ui-popupWidget-head {
- height: 2.5em;
+ height: 2.5em;
}
.oo-ui-popupWidget-head .oo-ui-buttonWidget {
- margin: 0.25em;
+ margin: 0.25em;
}
.oo-ui-popupWidget-head .oo-ui-labelElement-label {
- margin: 0.75em 1em;
+ margin: 0.75em 1em;
}
.oo-ui-popupWidget-body-padded {
- padding: 0 1em;
+ padding: 0 1em;
}
.oo-ui-popupButtonWidget {
- position: relative;
+ position: relative;
}
.oo-ui-popupButtonWidget .oo-ui-popupWidget {
- position: absolute;
- left: 1em;
- cursor: auto;
+ position: absolute;
+ left: 1em;
+ cursor: auto;
}
.oo-ui-lookupInputWidget-menu {
- background-color: #fff;
+ background-color: #ffffff;
}
.oo-ui-textInputWidget {
- position: relative;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
+ position: relative;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
}
.oo-ui-textInputWidget input,
.oo-ui-textInputWidget textarea {
- display: inline-block;
- width: 100%;
- resize: none;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
+ display: inline-block;
+ width: 100%;
+ resize: none;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
}
.oo-ui-textInputWidget.oo-ui-pendingElement-pending input,
.oo-ui-textInputWidget.oo-ui-pendingElement-pending textarea {
- background-image: /* @embed */ url(images/textures/pending.gif);
+ background-image: /* @embed */ url(images/textures/pending.gif);
}
.oo-ui-textInputWidget > .oo-ui-iconElement-icon,
.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator {
- position: absolute;
- top: 0;
- height: 100%;
- background-repeat: no-repeat;
- cursor: pointer;
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
+ position: absolute;
+ top: 0;
+ height: 100%;
+ background-repeat: no-repeat;
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
}
.oo-ui-textInputWidget > .oo-ui-iconElement-icon {
- left: 0;
+ left: 0;
}
.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator {
- right: 0;
+ right: 0;
}
.oo-ui-textInputWidget input,
.oo-ui-textInputWidget textarea {
- padding: .8em 1em;
+ padding: 0.8em 1em;
}
.oo-ui-menuWidget {
- position: absolute;
- background: white;
- border: solid 1px #dddddd;
+ position: absolute;
+ background: white;
+ border: solid 1px #dddddd;
}
.oo-ui-menuWidget input {
- position: absolute;
- width: 0;
- height: 0;
- overflow: hidden;
- opacity: 0;
+ position: absolute;
+ width: 0;
+ height: 0;
+ overflow: hidden;
+ opacity: 0;
}
.oo-ui-menuItemWidget {
- position: relative;
+ position: relative;
}
.oo-ui-menuItemWidget .oo-ui-iconElement-icon {
- display: none;
+ display: none;
}
.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
- background-color: transparent;
+ background-color: transparent;
}
.oo-ui-menuItemWidget.oo-ui-optionWidget-selected .oo-ui-iconElement-icon {
- display: block;
+ display: block;
}
.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
- background: #347bff;
- color: #ffffff;
+ background: #347bff;
+ color: #ffffff;
}
.oo-ui-menuItemWidget .oo-ui-iconElement-icon {
- background-size: 24px auto;
+ background-size: 24px auto;
}
.oo-ui-menuSectionItemWidget {
- cursor: default;
- font-weight: normal;
- color: #777777;
- border: none;
+ cursor: default;
+ font-weight: normal;
+ color: #777777;
+ border: none;
}
.oo-ui-inlineMenuWidget {
- position: relative;
- display: inline-block;
- margin: 0.25em 0;
- min-width: 20em;
+ position: relative;
+ display: inline-block;
+ margin: 0.25em 0;
+ min-width: 20em;
}
.oo-ui-inlineMenuWidget-handle {
- width: 100%;
- display: inline-block;
- cursor: pointer;
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
+ width: 100%;
+ display: inline-block;
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
}
.oo-ui-inlineMenuWidget-handle .oo-ui-indicatorElement-indicator,
.oo-ui-inlineMenuWidget-handle .oo-ui-iconElement-icon {
- position: absolute;
- background-position: center center;
- background-repeat: no-repeat;
+ position: absolute;
+ background-position: center center;
+ background-repeat: no-repeat;
}
.oo-ui-inlineMenuWidget .oo-ui-menuWidget {
- z-index: 1;
- width: 100%;
+ z-index: 1;
+ width: 100%;
}
.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-inlineMenuWidget-handle {
- cursor: default;
+ cursor: default;
}
.oo-ui-inlineMenuWidget-handle {
- height: 2.5em;
+ height: 2.5em;
}
.oo-ui-inlineMenuWidget-handle .oo-ui-indicatorElement-indicator,
.oo-ui-inlineMenuWidget-handle .oo-ui-iconElement-icon {
- top: 0;
- width: 2.5em;
- height: 2.5em;
+ top: 0;
+ width: 2.5em;
+ height: 2.5em;
}
.oo-ui-inlineMenuWidget-handle .oo-ui-indicatorElement-indicator {
- right: 0;
+ right: 0;
}
.oo-ui-inlineMenuWidget-handle .oo-ui-iconElement-icon {
- left: 0.25em;
+ left: 0.25em;
}
.oo-ui-inlineMenuWidget-handle .oo-ui-labelElement-label {
- line-height: 2.5em;
- margin: 0 0.5em;
+ line-height: 2.5em;
+ margin: 0 0.5em;
}
.oo-ui-inlineMenuWidget.oo-ui-iconElement .oo-ui-inlineMenuWidget-handle .oo-ui-labelElement-label {
- margin-left: 3em;
+ margin-left: 3em;
}
.oo-ui-inlineMenuWidget.oo-ui-indicatorElement .oo-ui-inlineMenuWidget-handle .oo-ui-labelElement-label {
- margin-right: 2em;
+ margin-right: 2em;
}
.oo-ui-outlineItemWidget {
- position: relative;
- cursor: pointer;
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- padding: 0.75em;
+ position: relative;
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ padding: 0.75em;
}
.oo-ui-outlineControlsWidget {
- height: 3em;
+ height: 3em;
}
.oo-ui-outlineControlsWidget-items,
.oo-ui-outlineControlsWidget-movers {
- float: left;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
+ float: left;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
}
.oo-ui-outlineControlsWidget > .oo-ui-iconElement-icon {
- float: left;
- background-position: right center;
- background-repeat: no-repeat;
+ float: left;
+ background-position: right center;
+ background-repeat: no-repeat;
}
.oo-ui-outlineControlsWidget-items {
- float: left;
+ float: left;
}
.oo-ui-outlineControlsWidget-items .oo-ui-buttonWidget {
- float: left;
+ float: left;
}
.oo-ui-outlineControlsWidget-movers {
- float: right;
+ float: right;
}
.oo-ui-outlineControlsWidget-movers .oo-ui-buttonWidget {
- float: right;
+ float: right;
}
.oo-ui-outlineControlsWidget-items,
.oo-ui-outlineControlsWidget-movers {
- height: 2em;
- margin: 0.5em;
- padding: 0;
+ height: 2em;
+ margin: 0.5em;
+ padding: 0;
}
.oo-ui-outlineControlsWidget > .oo-ui-iconElement-icon {
- width: 1.5em;
- height: 2em;
- margin: 0.5em 0 0.5em 0.5em;
+ width: 1.5em;
+ height: 2em;
+ margin: 0.5em 0 0.5em 0.5em;
}
.oo-ui-outlineControlsWidget-items {
- margin-left: 0;
+ margin-left: 0;
}
.oo-ui-comboBoxWidget > .oo-ui-selectWidget {
- z-index: 1;
+ z-index: 1;
}
.oo-ui-comboBoxWidget > .oo-ui-selectWidget > .oo-ui-selectWidget {
- min-width: 20em;
+ min-width: 20em;
}
.oo-ui-searchWidget-query {
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
}
.oo-ui-searchWidget-query .oo-ui-textInputWidget {
- width: 100%;
+ width: 100%;
}
.oo-ui-searchWidget-results {
- position: absolute;
- bottom: 0;
- left: 0;
- right: 0;
- overflow-x: hidden;
- overflow-y: auto;
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ overflow-x: hidden;
+ overflow-y: auto;
}
.oo-ui-searchWidget-query {
- height: 4em;
- padding: 0 1em;
+ height: 4em;
+ padding: 0 1em;
}
.oo-ui-searchWidget-query .oo-ui-textInputWidget {
- margin: 0.75em 0;
+ margin: 0.75em 0;
}
.oo-ui-searchWidget-results {
- top: 4em;
- padding: 1em;
- line-height: 0;
+ top: 4em;
+ padding: 1em;
+ line-height: 0;
}
.oo-ui-window {
- line-height: 1em;
- /* Content div takes focus when opened, so hide outline */
+ line-height: 1em;
+ /* Content div takes focus when opened, so hide outline */
}
.oo-ui-window-frame {
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
}
.oo-ui-window-frame > iframe {
- width: 100%;
- height: 100%;
- margin: 0;
- padding: 0;
+ width: 100%;
+ height: 100%;
+ margin: 0;
+ padding: 0;
}
.oo-ui-window-content:focus {
- outline: none;
+ outline: none;
}
.oo-ui-window-head,
.oo-ui-window-foot {
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
}
.oo-ui-window-body {
- margin: 0;
- padding: 0;
- background: none;
+ margin: 0;
+ padding: 0;
+ background: none;
}
.oo-ui-window-overlay {
- position: absolute;
- top: 0;
- left: 0;
+ position: absolute;
+ top: 0;
+ left: 0;
}
.oo-ui-dialog-content > .oo-ui-window-head,
.oo-ui-dialog-content > .oo-ui-window-body,
.oo-ui-dialog-content > .oo-ui-window-foot {
- position: absolute;
- left: 0;
- right: 0;
- overflow: hidden;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
+ position: absolute;
+ left: 0;
+ right: 0;
+ overflow: hidden;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
}
.oo-ui-dialog-content > .oo-ui-window-head {
- z-index: 1;
- top: 0;
+ z-index: 1;
+ top: 0;
}
.oo-ui-dialog-content > .oo-ui-window-head.oo-ui-pendingElement-pending {
- background-image: /* @embed */ url(images/textures/pending.gif);
+ background-image: /* @embed */ url(images/textures/pending.gif);
}
.oo-ui-dialog-content > .oo-ui-window-body {
- z-index: 2;
- top: 0;
- bottom: 0;
+ z-index: 2;
+ top: 0;
+ bottom: 0;
}
.oo-ui-dialog-content > .oo-ui-window-foot {
- z-index: 1;
- bottom: 0;
+ z-index: 1;
+ bottom: 0;
}
.oo-ui-dialog-content > .oo-ui-window-overlay {
- z-index: 3;
+ z-index: 3;
}
.oo-ui-messageDialog-actions-horizontal {
- display: table;
- table-layout: fixed;
- width: 100%;
+ display: table;
+ table-layout: fixed;
+ width: 100%;
}
.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
- display: table-cell;
- width: 1%;
+ display: table-cell;
+ width: 1%;
}
.oo-ui-messageDialog-actions-vertical {
- display: block;
+ display: block;
}
.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
- display: block;
- overflow: hidden;
- text-overflow: ellipsis;
+ display: block;
+ overflow: hidden;
+ text-overflow: ellipsis;
}
.oo-ui-messageDialog-actions .oo-ui-actionWidget {
- position: relative;
- text-align: center;
+ position: relative;
+ text-align: center;
}
.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-buttonElement-button {
- display: block;
+ display: block;
}
.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labelElement-label {
- position: relative;
- top: auto;
- bottom: auto;
- display: inline;
- white-space: nowrap;
+ position: relative;
+ top: auto;
+ bottom: auto;
+ display: inline;
+ white-space: nowrap;
}
.oo-ui-messageDialog-title,
.oo-ui-messageDialog-message {
- display: block;
- text-align: center;
- padding-top: 0.5em;
+ display: block;
+ text-align: center;
+ padding-top: 0.5em;
}
.oo-ui-messageDialog-title {
- font-size: 1.5em;
- line-height: 1em;
- color: #000;
+ font-size: 1.5em;
+ line-height: 1em;
+ color: #000000;
}
.oo-ui-messageDialog-message {
- font-size: 0.9em;
- line-height: 1.25em;
- color: #666;
+ font-size: 0.9em;
+ line-height: 1.25em;
+ color: #666666;
}
.oo-ui-messageDialog-message-verbose {
- font-size: 1.1em;
- line-height: 1.5em;
- text-align: left;
+ font-size: 1.1em;
+ line-height: 1.5em;
+ text-align: left;
}
.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
- border-right: solid 1px #e5e5e5;
+ border-right: solid 1px #e5e5e5;
}
.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget:last-child {
- border-right-width: 0;
+ border-right-width: 0;
}
.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
- border-bottom: solid 1px #e5e5e5;
+ border-bottom: solid 1px #e5e5e5;
}
.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget:last-child {
- border-bottom-width: 0;
+ border-bottom-width: 0;
}
.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labelElement-label {
- text-align: center;
- line-height: 3.4em;
- padding: 0 2em;
+ text-align: center;
+ line-height: 3.4em;
+ padding: 0 2em;
}
.oo-ui-messageDialog-actions .oo-ui-actionWidget:hover {
- background-color: rgba(0, 0, 0, 0.05);
+ background-color: rgba(0, 0, 0, 0.05);
}
.oo-ui-messageDialog-actions .oo-ui-actionWidget:active {
- background-color: rgba(0, 0, 0, 0.1);
+ background-color: rgba(0, 0, 0, 0.1);
}
.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-primary:hover {
- background-color: rgba(8, 126, 204, 0.05);
+ background-color: rgba(8, 126, 204, 0.05);
}
.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-primary:active {
- background-color: rgba(8, 126, 204, 0.1);
+ background-color: rgba(8, 126, 204, 0.1);
}
.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-labelElement-label {
- font-weight: bold;
+ font-weight: bold;
}
.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:hover {
- background-color: rgba(118, 171, 54, 0.05);
+ background-color: rgba(118, 171, 54, 0.05);
}
.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:active {
- background-color: rgba(118, 171, 54, 0.1);
+ background-color: rgba(118, 171, 54, 0.1);
}
.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:hover {
- background-color: rgba(212, 83, 83, 0.05);
+ background-color: rgba(212, 83, 83, 0.05);
}
.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:active {
- background-color: rgba(212, 83, 83, 0.1);
+ background-color: rgba(212, 83, 83, 0.1);
}
.oo-ui-processDialog-location {
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
}
.oo-ui-processDialog-title {
- display: inline;
- padding: 0;
+ display: inline;
+ padding: 0;
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget,
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget,
.oo-ui-processDialog-actions-other .oo-ui-actionWidget {
- white-space: nowrap;
+ white-space: nowrap;
}
.oo-ui-processDialog-actions-safe,
.oo-ui-processDialog-actions-primary {
- position: absolute;
- top: 0;
- bottom: 0;
+ position: absolute;
+ top: 0;
+ bottom: 0;
}
.oo-ui-processDialog-actions-safe {
- left: 0;
+ left: 0;
}
.oo-ui-processDialog-actions-primary {
- right: 0;
+ right: 0;
}
.oo-ui-processDialog-errors {
- display: none;
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- z-index: 2;
- overflow-x: hidden;
- overflow-y: auto;
+ display: none;
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ z-index: 2;
+ overflow-x: hidden;
+ overflow-y: auto;
}
.oo-ui-processDialog-content .oo-ui-window-head {
- height: 3.35em;
- border-bottom: 1px solid #dddddd;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
+ height: 3.35em;
+ border-bottom: 1px solid #dddddd;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
}
.oo-ui-processDialog-content .oo-ui-window-body {
- top: 3.35em;
- padding: 2em 0;
+ top: 3.35em;
+ padding: 2em 0;
}
.oo-ui-processDialog-navigation {
- position: relative;
- height: 3.35em;
- padding: 0 1em;
+ position: relative;
+ height: 3.35em;
+ padding: 0 1em;
}
.oo-ui-processDialog-location {
- padding: 0.75em 0;
- height: 1.85em;
- cursor: default;
- text-align: center;
+ padding: 0.75em 0;
+ height: 1.85em;
+ cursor: default;
+ text-align: center;
}
.oo-ui-processDialog-title {
- font-weight: bold;
- line-height: 1.85em;
+ font-weight: bold;
+ line-height: 1.85em;
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-buttonElement-button,
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-buttonElement-button,
.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-buttonElement-button {
- padding: 0.35em 0.75em;
- min-width: 1.85em;
- min-height: 1.85em;
- border: 1px solid #dddddd;
- border-radius: 4px;
+ padding: 0.35em 0.75em;
+ min-width: 1.85em;
+ min-height: 1.85em;
+ border: 1px solid #dddddd;
+ border-radius: 4px;
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-labelElement-label,
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-labelElement-label,
.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-labelElement-label {
- line-height: 1.85em;
- padding: 0 1em;
- font-weight: bold;
- color: #777777;
+ line-height: 1.85em;
+ padding: 0 1em;
+ font-weight: bold;
+ color: #777777;
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-iconElement-icon,
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-iconElement-icon,
.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-iconElement-icon {
- position: absolute;
- margin-top: -0.125em;
+ position: absolute;
+ margin-top: -0.125em;
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button,
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button,
.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
- vertical-align: middle;
+ vertical-align: middle;
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-destructive .oo-ui-buttonElement-button,
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-destructive .oo-ui-buttonElement-button,
.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-flaggedElement-destructive .oo-ui-buttonElement-button {
- border: 1px solid transparent;
+ border: 1px solid transparent;
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-destructive .oo-ui-labelElement-label,
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-destructive .oo-ui-labelElement-label,
.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-flaggedElement-destructive .oo-ui-labelElement-label {
- color: #d11d13;
+ color: #d11d13;
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-buttonElement-button,
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-buttonElement-button {
- padding: 0.75em 0.35em;
- border: none;
- border-radius: 0;
+ padding: 0.75em 0.35em;
+ border: none;
+ border-radius: 0;
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-buttonElement-button,
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-buttonElement-button {
- background-color: #347bff;
+ background-color: #347bff;
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-labelElement-label,
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-primary .oo-ui-labelElement-label {
- color: #ffffff;
+ color: #ffffff;
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
- left: 0.5em;
+ left: 0.5em;
}
.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-labelElement-label {
- padding-left: 2.25em;
+ padding-left: 2.25em;
}
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
- right: 0.5em;
+ right: 0.5em;
}
.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-labelElement-label {
- padding-right: 2.25em;
+ padding-right: 2.25em;
}
.oo-ui-processDialog-actions-other {
- position: absolute;
- bottom: 1em;
+ position: absolute;
+ bottom: 1em;
}
.oo-ui-processDialog > .oo-ui-window-frame {
- min-height: 5em;
+ min-height: 5em;
}
.oo-ui-processDialog-errors {
- background-color: rgba(255, 255, 255, 0.9);
- padding: 3em 3em 1.5em 3em;
- text-align: center;
+ background-color: rgba(255, 255, 255, 0.9);
+ padding: 3em 3em 1.5em 3em;
+ text-align: center;
}
.oo-ui-processDialog-errors .oo-ui-buttonWidget {
- margin: 2em 1em 2em 1em;
+ margin: 2em 1em 2em 1em;
}
.oo-ui-processDialog-errors-title {
- font-size: 1.5em;
- color: #000;
- margin-bottom: 2em;
+ font-size: 1.5em;
+ color: #000000;
+ margin-bottom: 2em;
}
.oo-ui-processDialog-error {
- text-align: left;
- margin: 1em;
- padding: 1em;
- border: solid 1px #ff9e9e;
- background-color: #fff7f7;
- border-radius: 0.25em;
+ text-align: left;
+ margin: 1em;
+ padding: 1em;
+ border: solid 1px #ff9e9e;
+ background-color: #fff7f7;
+ border-radius: 0.25em;
}
.oo-ui-windowManager-modal > .oo-ui-dialog {
- position: fixed;
- width: 0;
- height: 0;
- overflow: hidden;
+ position: fixed;
+ width: 0;
+ height: 0;
+ overflow: hidden;
}
.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup {
- width: auto;
- height: auto;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- padding: 1em;
+ width: auto;
+ height: auto;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ padding: 1em;
}
.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup > .oo-ui-window-frame {
- position: absolute;
- right: 0;
- left: 0;
- margin: auto;
- overflow: hidden;
- max-width: 100%;
- max-height: 100%;
+ position: absolute;
+ right: 0;
+ left: 0;
+ margin: auto;
+ overflow: hidden;
+ max-width: 100%;
+ max-height: 100%;
}
.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup > .oo-ui-window-frame > iframe {
- width: 100%;
- height: 100%;
+ width: 100%;
+ height: 100%;
}
.oo-ui-windowManager-fullscreen > .oo-ui-dialog > .oo-ui-window-frame {
- width: 100%;
- height: 100%;
- top: 0;
- bottom: 0;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ bottom: 0;
}
.oo-ui-windowManager-modal > .oo-ui-dialog {
- background-color: rgba(255, 255, 255, 0.5);
- opacity: 0;
- -webkit-transition: opacity 250ms ease-in-out;
- -moz-transition: opacity 250ms ease-in-out;
- -ms-transition: opacity 250ms ease-in-out;
- -o-transition: opacity 250ms ease-in-out;
- transition: opacity 250ms ease-in-out;
+ background-color: rgba(255, 255, 255, 0.5);
+ opacity: 0;
+ -webkit-transition: opacity 250ms ease-in-out;
+ -moz-transition: opacity 250ms ease-in-out;
+ -ms-transition: opacity 250ms ease-in-out;
+ -o-transition: opacity 250ms ease-in-out;
+ transition: opacity 250ms ease-in-out;
}
.oo-ui-windowManager-modal > .oo-ui-dialog > .oo-ui-window-frame {
- top: 0;
- bottom: 0;
- background-color: #fff;
- -webkit-transform: translate3d(0, -200%, 0);
- -moz-transform: translate3d(0, -200%, 0);
- -ms-transform: translate3d(0, -200%, 0);
- -o-transform: translate3d(0, -200%, 0);
- transform: translate3d(0, -200%, 0);
- -webkit-transition: transform 250ms ease-in-out;
- -moz-transition: transform 250ms ease-in-out;
- -ms-transition: transform 250ms ease-in-out;
- -o-transition: transform 250ms ease-in-out;
- transition: transform 250ms ease-in-out;
+ top: 0;
+ bottom: 0;
+ background-color: #ffffff;
+ -webkit-transform: translate3d(0, -200%, 0);
+ -moz-transform: translate3d(0, -200%, 0);
+ -ms-transform: translate3d(0, -200%, 0);
+ -o-transform: translate3d(0, -200%, 0);
+ transform: translate3d(0, -200%, 0);
+ -webkit-transition: transform 250ms ease-in-out;
+ -moz-transition: transform 250ms ease-in-out;
+ -ms-transition: transform 250ms ease-in-out;
+ -o-transition: transform 250ms ease-in-out;
+ transition: transform 250ms ease-in-out;
}
.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready {
- opacity: 1;
+ opacity: 1;
}
.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready > .oo-ui-window-frame {
- -webkit-transform: translate3d(0, 0, 0);
- -moz-transform: translate3d(0, 0, 0);
- -ms-transform: translate3d(0, 0, 0);
- -o-transform: translate3d(0, 0, 0);
- transform: translate3d(0, 0, 0);
+ -webkit-transform: translate3d(0, 0, 0);
+ -moz-transform: translate3d(0, 0, 0);
+ -ms-transform: translate3d(0, 0, 0);
+ -o-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
}
.oo-ui-windowManager-modal.oo-ui-windowManager-floating > .oo-ui-dialog > .oo-ui-window-frame {
- border: solid 1px #ccc;
- border-radius: 0.5em;
- box-shadow: 0 0.2em 1em rgba(0, 0, 0, 0.3);
+ border: solid 1px #cccccc;
+ border-radius: 0.5em;
+ box-shadow: 0 0.2em 1em rgba(0, 0, 0, 0.3);
}
/*
* additional rules to the base styles.
*/
.oo-ui-icon-check {
- background-image: /* @embed */ url(themes/minerva/images/icons/check.png);
- background: #347bff;
+ background-image: /* @embed */ url(themes/minerva/images/icons/check.png);
+ background: #347bff;
}
/*!
- * OOjs UI v0.1.0-pre (ec785c2c64)
+ * OOjs UI v0.1.0-pre (f2c3f12959)
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011–2014 OOjs Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2014-09-18T01:30:17Z
+ * Date: 2014-09-18T23:22:20Z
*/
( function ( OO ) {
* @return {number} Content height
*/
OO.ui.Window.prototype.getContentHeight = function () {
+ // Temporarily resize the frame so getBodyHeight() can use scrollHeight measurements
+ var bodyHeight, oldHeight = this.$frame[0].style.height;
+ this.$frame[0].style.height = '1px';
+ bodyHeight = this.getBodyHeight();
+ this.$frame[0].style.height = oldHeight;
+
return Math.round(
// Add buffer for border
( this.$frame.outerHeight() - this.$frame.innerHeight() ) +
// Use combined heights of children
- ( this.$head.outerHeight( true ) + this.getBodyHeight() + this.$foot.outerHeight( true ) )
+ ( this.$head.outerHeight( true ) + bodyHeight + this.$foot.outerHeight( true ) )
);
};
/**
* Get the height of the dialog contents.
*
+ * When this function is called, the dialog will temporarily have been resized
+ * to height=1px, so .scrollHeight measurements can be taken accurately.
+ *
* @return {number} Height of content
*/
OO.ui.Window.prototype.getBodyHeight = function () {
manager.opening.notify( { state: 'setup' } );
setTimeout( function () {
win.ready( data ).then( function () {
- manager.updateWindowSize( win );
manager.opening.notify( { state: 'ready' } );
manager.opening = null;
manager.opened = $.Deferred();
}
this.$element.css( dimensions );
this.setIdealSize( $container.width() );
+ // We updated the position, so re-evaluate the clipping state
+ this.clip();
return this;
};
/*!
- * OOjs UI v0.1.0-pre (ec785c2c64)
+ * OOjs UI v0.1.0-pre (f2c3f12959)
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011–2014 OOjs Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2014-09-18T01:30:17Z
+ * Date: 2014-09-18T23:22:20Z
*/
/*
* Blank theme mixins.
* additional rules to the base styles.
*/
.oo-ui-icon-add-item {
- background-image: /* @embed */ url(images/icons/add-item.svg);
+ background-image: /* @embed */ url(images/icons/add-item.svg);
}
.oo-ui-icon-advanced {
- background-image: /* @embed */ url(images/icons/advanced.svg);
+ background-image: /* @embed */ url(images/icons/advanced.svg);
}
.oo-ui-icon-alert {
- background-image: /* @embed */ url(images/icons/alert.svg);
+ background-image: /* @embed */ url(images/icons/alert.svg);
}
.oo-ui-icon-check {
- background-image: /* @embed */ url(images/icons/check.svg);
+ background-image: /* @embed */ url(images/icons/check.svg);
}
.oo-ui-icon-clear {
- background-image: /* @embed */ url(images/icons/clear.svg);
+ background-image: /* @embed */ url(images/icons/clear.svg);
}
.oo-ui-icon-close {
- background-image: /* @embed */ url(images/icons/close.svg);
+ background-image: /* @embed */ url(images/icons/close.svg);
}
.oo-ui-icon-code {
- background-image: /* @embed */ url(images/icons/code.svg);
+ background-image: /* @embed */ url(images/icons/code.svg);
}
.oo-ui-icon-collapse {
- background-image: /* @embed */ url(images/icons/collapse.svg);
+ background-image: /* @embed */ url(images/icons/collapse.svg);
}
.oo-ui-icon-comment {
- background-image: /* @embed */ url(images/icons/comment.svg);
+ background-image: /* @embed */ url(images/icons/comment.svg);
}
.oo-ui-icon-expand {
- background-image: /* @embed */ url(images/icons/expand.svg);
+ background-image: /* @embed */ url(images/icons/expand.svg);
}
.oo-ui-icon-help {
- background-image: /* @embed */ url(images/icons/help.svg);
+ background-image: /* @embed */ url(images/icons/help.svg);
}
.oo-ui-icon-info {
- background-image: /* @embed */ url(images/icons/info.svg);
+ background-image: /* @embed */ url(images/icons/info.svg);
}
.oo-ui-icon-link {
- background-image: /* @embed */ url(images/icons/link.svg);
+ background-image: /* @embed */ url(images/icons/link.svg);
}
.oo-ui-icon-menu {
- background-image: /* @embed */ url(images/icons/menu.svg);
+ background-image: /* @embed */ url(images/icons/menu.svg);
}
.oo-ui-icon-next {
- background-image: /* @embed */ url(images/icons/move-ltr.svg);
+ background-image: /* @embed */ url(images/icons/move-ltr.svg);
}
.oo-ui-icon-picture {
- background-image: /* @embed */ url(images/icons/picture.svg);
+ background-image: /* @embed */ url(images/icons/picture.svg);
}
.oo-ui-icon-previous {
- background-image: /* @embed */ url(images/icons/move-rtl.svg);
+ background-image: /* @embed */ url(images/icons/move-rtl.svg);
}
.oo-ui-icon-redo {
- background-image: /* @embed */ url(images/icons/arched-arrow-ltr.svg);
+ background-image: /* @embed */ url(images/icons/arched-arrow-ltr.svg);
}
.oo-ui-icon-remove {
- background-image: /* @embed */ url(images/icons/remove.svg);
+ background-image: /* @embed */ url(images/icons/remove.svg);
}
.oo-ui-icon-search {
- background-image: /* @embed */ url(images/icons/search.svg);
+ background-image: /* @embed */ url(images/icons/search.svg);
}
.oo-ui-icon-settings {
- background-image: /* @embed */ url(images/icons/settings.svg);
+ background-image: /* @embed */ url(images/icons/settings.svg);
}
.oo-ui-icon-tag {
- background-image: /* @embed */ url(images/icons/tag.svg);
+ background-image: /* @embed */ url(images/icons/tag.svg);
}
.oo-ui-icon-undo {
- background-image: /* @embed */ url(images/icons/arched-arrow-rtl.svg);
+ background-image: /* @embed */ url(images/icons/arched-arrow-rtl.svg);
}
.oo-ui-icon-window {
- background-image: /* @embed */ url(images/icons/window.svg);
+ background-image: /* @embed */ url(images/icons/window.svg);
}
.oo-ui-indicator-alert {
- background-image: /* @embed */ url(images/indicators/alert.svg);
+ background-image: /* @embed */ url(images/indicators/alert.svg);
}
.oo-ui-indicator-down {
- background-image: /* @embed */ url(images/indicators/arrow-down.svg);
+ background-image: /* @embed */ url(images/indicators/arrow-down.svg);
}
.oo-ui-indicator-next {
- background-image: /* @embed */ url(images/indicators/arrow-ltr.svg);
+ background-image: /* @embed */ url(images/indicators/arrow-ltr.svg);
}
.oo-ui-indicator-previous {
- background-image: /* @embed */ url(images/indicators/arrow-rtl.svg);
+ background-image: /* @embed */ url(images/indicators/arrow-rtl.svg);
}
.oo-ui-indicator-required {
- background-image: /* @embed */ url(images/indicators/required.svg);
+ background-image: /* @embed */ url(images/indicators/required.svg);
}
.oo-ui-indicator-up {
- background-image: /* @embed */ url(images/indicators/arrow-up.svg);
+ background-image: /* @embed */ url(images/indicators/arrow-up.svg);
}
.oo-ui-texture-pending {
- background-image: /* @embed */ url(images/textures/pending.gif);
+ background-image: /* @embed */ url(images/textures/pending.gif);
}
.oo-ui-texture-transparency {
- background-image: /* @embed */ url(images/textures/transparency.svg);
+ background-image: /* @embed */ url(images/textures/transparency.svg);
}
*/
/* Hide, but keep accessible for screen-readers. */
-.redirectTo {
+.redirectMsg p {
overflow: hidden;
height: 0;
zoom: 1;
/**
* Misc. utilities
*
- * @deprecated since 1.17 Use mediawiki.util instead
+ * @deprecated since 1.17 Use mediawiki.util or jquery.accessKeyLabel instead
*/
msg = 'Use mediawiki.util instead.';
-mw.log.deprecate( win, 'updateTooltipAccessKeys', mw.util.updateTooltipAccessKeys, msg );
mw.log.deprecate( win, 'addPortletLink', mw.util.addPortletLink, msg );
mw.log.deprecate( win, 'appendCSS', mw.util.addCSS, msg );
msg = 'Use jquery.accessKeyLabel instead.';
mw.log.deprecate( win, 'tooltipAccessKeyPrefix', 'alt-', msg );
mw.log.deprecate( win, 'tooltipAccessKeyRegexp', /\[(alt-)?(.)\]$/, msg );
+// mw.util.updateTooltipAccessKeys already generates a deprecation message.
+win.updateTooltipAccessKeys = function () {
+ return mw.util.updateTooltipAccessKeys.apply( null, arguments );
+};
/**
* Wikipage import methods
@colorGrayLight: #ccc;
@colorGrayLighter: #ddd;
@colorGrayLightest: #eee;
+
+// Global border radius to be used to buttons and inputs
+@borderRadius: 2px;
// Things outside the wikipage content
$( function () {
+ var $nodes;
if ( !supportsPlaceholder ) {
// Exclude content to avoid hitting it twice for the (first) wikipage content
}
// Add accesskey hints to the tooltips
- mw.util.updateTooltipAccessKeys();
+ if ( document.querySelectorAll ) {
+ // If we're running on a browser where we can do this efficiently,
+ // just find all elements that have accesskeys. We can't use jQuery's
+ // polyfill for the selector since looping over all elements on page
+ // load might be too slow.
+ $nodes = $( document.querySelectorAll( '[accesskey]' ) );
+ } else {
+ // Otherwise go through some elements likely to have accesskeys rather
+ // than looping over all of them. Unfortunately this will not fully
+ // work for custom skins with different HTML structures. Input, label
+ // and button should be rare enough that no optimizations are needed.
+ $nodes = $( '#column-one a, #mw-head a, #mw-panel a, #p-logo a, input, label, button' );
+ }
+ $nodes.updateTooltipAccessKeys();
} );
* Styleguide 1.1.
*/
span.reference {
- font-size: smaller;
+ font-size: 80%;
line-height: 1;
vertical-align: super;
unicode-bidi: -moz-isolate;
//
// Styleguide 2.
-@buttonBorderRadius: 3px;
@transitionDuration: .1s;
@transitionFunction: ease-in-out;
// Neutral button styling
//
// Markup:
-// <button class="mw-ui-button">.mw-ui-button</button>
-// <button class="mw-ui-button" disabled>.mw-ui-button</button>
+// <div>
+// <button class="mw-ui-button">.mw-ui-button</button>
+// </div>
+// <div>
+// <button class="mw-ui-button" disabled>.mw-ui-button</button>
+// </div>
//
// Styleguide 2.1.
.mw-ui-button {
// Container styling
.button-colors(#FFF);
- border-radius: @buttonBorderRadius;
+ border-radius: @borderRadius;
+ min-width: 80px;
// Ensure that buttons and inputs are nicely aligned when they have differing heights
vertical-align: middle;
// using the mw-ui-big class.
//
// Markup:
- // <button class="mw-ui-button mw-ui-big">.mw-ui-button</button>
- // <button class="mw-ui-button mw-ui-progressive mw-ui-big">.mw-ui-progressive</button>
- // <button class="mw-ui-button mw-ui-constructive mw-ui-big">.mw-ui-constructive</button>
- // <button class="mw-ui-button mw-ui-destructive mw-ui-big">.mw-ui-destructive</button>
+ // <div>
+ // <button class="mw-ui-button mw-ui-big">.mw-ui-button</button>
+ // </div>
+ // <div>
+ // <button class="mw-ui-button mw-ui-progressive mw-ui-big">.mw-ui-progressive</button>
+ // </div>
+ // <div>
+ // <button class="mw-ui-button mw-ui-constructive mw-ui-big">.mw-ui-constructive</button>
+ // </div>
+ // <div>
+ // <button class="mw-ui-button mw-ui-destructive mw-ui-big">.mw-ui-destructive</button>
+ // </div>
//
// Styleguide 2.1.6.
&.mw-ui-big {
// Some buttons might need to be stacked.
//
// Markup:
- // <button class="mw-ui-button mw-ui-block">.mw-ui-button</button>
- // <button class="mw-ui-button mw-ui-progressive mw-ui-block">.mw-ui-progressive</button>
- // <button class="mw-ui-button mw-ui-constructive mw-ui-block">.mw-ui-constructive</button>
- // <button class="mw-ui-button mw-ui-destructive mw-ui-block">.mw-ui-destructive</button>
+ // <div>
+ // <button class="mw-ui-button mw-ui-block">.mw-ui-button</button>
+ // </div>
+ // <div>
+ // <button class="mw-ui-button mw-ui-progressive mw-ui-block">.mw-ui-progressive</button>
+ // </div>
+ // <div>
+ // <button class="mw-ui-button mw-ui-constructive mw-ui-block">.mw-ui-constructive</button>
+ // </div>
+ // <div>
+ // <button class="mw-ui-button mw-ui-destructive mw-ui-block">.mw-ui-destructive</button>
+ // </div>
//
// Styleguide 2.1.5.
&.mw-ui-block {
// .mw-ui-primary is deprecated, kept for compatibility.
//
// Markup:
- // <button class="mw-ui-button mw-ui-progressive">.mw-ui-progressive</button>
- // <button class="mw-ui-button mw-ui-progressive" disabled>.mw-ui-progressive</button>
+ // <div>
+ // <button class="mw-ui-button mw-ui-progressive">.mw-ui-progressive</button>
+ // </div>
+ // <div>
+ // <button class="mw-ui-button mw-ui-progressive" disabled>.mw-ui-progressive</button>
+ // </div>
//
// Styleguide 2.1.1.
&.mw-ui-progressive,
// e.g. save changes button
//
// Markup:
- // <button class="mw-ui-button mw-ui-constructive">.mw-ui-constructive</button>
- // <button class="mw-ui-button mw-ui-constructive" disabled>.mw-ui-constructive</button>
+ // <div>
+ // <button class="mw-ui-button mw-ui-constructive">.mw-ui-constructive</button>
+ // </div>
+ // <div>
+ // <button class="mw-ui-button mw-ui-constructive" disabled>.mw-ui-constructive</button>
+ // </div>
//
// Styleguide 2.1.2.
&.mw-ui-constructive {
// This should not be used for cancel buttons.
//
// Markup:
- // <button class="mw-ui-button mw-ui-destructive">.mw-ui-destructive</button>
- // <button class="mw-ui-button mw-ui-destructive" disabled>.mw-ui-destructive</button>
+ // <div>
+ // <button class="mw-ui-button mw-ui-destructive">.mw-ui-destructive</button>
+ // </div>
+ // <div>
+ // <button class="mw-ui-button mw-ui-destructive" disabled>.mw-ui-destructive</button>
+ // </div>
//
// Styleguide 2.1.3.
&.mw-ui-destructive {
// Use quiet buttons when they are less important and alongisde other progressive/destructive/progressive buttons.
//
// Markup:
- // <button class="mw-ui-button mw-ui-quiet">.mw-ui-button</button>
- // <button class="mw-ui-button mw-ui-constructive mw-ui-quiet">.mw-ui-constructive</button>
- // <button class="mw-ui-button mw-ui-constructive mw-ui-quiet" disabled>.mw-ui-constructive</button>
- // <button class="mw-ui-button mw-ui-destructive mw-ui-quiet">.mw-ui-destructive</button>
- // <button class="mw-ui-button mw-ui-destructive mw-ui-quiet" disabled>.mw-ui-destructive</button>
- // <button class="mw-ui-button mw-ui-progressive mw-ui-quiet">.mw-ui-progressive</button>
- // <button class="mw-ui-button mw-ui-progressive mw-ui-quiet" disabled>.mw-ui-progressive</button>
+ // <div>
+ // <button class="mw-ui-button mw-ui-quiet">.mw-ui-button</button>
+ // </div>
+ // <div>
+ // <button class="mw-ui-button mw-ui-constructive mw-ui-quiet">.mw-ui-constructive</button>
+ // </div>
+ // <div>
+ // <button class="mw-ui-button mw-ui-constructive mw-ui-quiet" disabled>.mw-ui-constructive</button>
+ // </div>
+ // <div>
+ // <button class="mw-ui-button mw-ui-destructive mw-ui-quiet">.mw-ui-destructive</button>
+ // </div>
+ // <div>
+ // <button class="mw-ui-button mw-ui-destructive mw-ui-quiet" disabled>.mw-ui-destructive</button>
+ // </div>
+ // <div>
+ // <button class="mw-ui-button mw-ui-progressive mw-ui-quiet">.mw-ui-progressive</button>
+ // </div>
+ // <div>
+ // <button class="mw-ui-button mw-ui-progressive mw-ui-quiet" disabled>.mw-ui-progressive</button>
+ // </div>
//
// Styleguide 2.1.4.
&.mw-ui-quiet {
float: left;
&:first-child {
- border-top-left-radius: @buttonBorderRadius;
- border-bottom-left-radius: @buttonBorderRadius;
+ border-top-left-radius: @borderRadius;
+ border-bottom-left-radius: @borderRadius;
}
&:not(:first-child) {
}
&:last-child{
- border-top-right-radius: @buttonBorderRadius;
- border-bottom-right-radius: @buttonBorderRadius;
+ border-top-right-radius: @borderRadius;
+ border-bottom-right-radius: @borderRadius;
}
}
@import "mediawiki.mixins";
+@import "mediawiki.ui/variables";
// Checkbox
//
// the pseudo before element of the label after the checkbox now looks like a checkbox
& + label {
+ cursor: pointer;
+
&::before {
content: '';
position: absolute;
left: 0;
display: inline-block;
- border-radius: 2px;
+ border-radius: @borderRadius;
margin-right: 18px;
width: @checkboxSize;
height: @checkboxSize;
background-color: #fff;
- cursor: pointer;
border: 1px solid grey;
}
}
}
// disabled checked boxes have a gray background
- &:disabled + label::before {
- background-color: lightgrey;
+ &:disabled + label {
+ cursor: default;
+
+ &::before {
+ background-color: lightgrey;
+ }
}
}
}
border: 1px solid @colorFieldBorder;
.box-sizing(border-box);
width: 100%;
- padding: .3em .3em .3em .6em;
+ padding: .4em .3em .2em .6em;
display: block;
vertical-align: middle;
+ border-radius: @borderRadius;
// Override user agent stylesheet properties. Instead use parent element.
color: inherit;
font-family: inherit;
return null;
},
- /**
- * Add the appropriate prefix to the accesskey shown in the tooltip.
- *
- * If the `$nodes` parameter is given, only those nodes are updated;
- * otherwise, depending on browser support, we update either all elements
- * with accesskeys on the page or a bunch of elements which are likely to
- * have them on core skins.
- *
- * @param {Array|jQuery} [$nodes] A jQuery object, or array of nodes to update.
- */
- updateTooltipAccessKeys: function ( $nodes ) {
- if ( !$nodes ) {
- if ( document.querySelectorAll ) {
- // If we're running on a browser where we can do this efficiently,
- // just find all elements that have accesskeys. We can't use jQuery's
- // polyfill for the selector since looping over all elements on page
- // load might be too slow.
- $nodes = $( document.querySelectorAll( '[accesskey]' ) );
- } else {
- // Otherwise go through some elements likely to have accesskeys rather
- // than looping over all of them. Unfortunately this will not fully
- // work for custom skins with different HTML structures. Input, label
- // and button should be rare enough that no optimizations are needed.
- $nodes = $( '#column-one a, #mw-head a, #mw-panel a, #p-logo a, input, label, button' );
- }
- } else if ( !( $nodes instanceof $ ) ) {
- $nodes = $( $nodes );
- }
-
- $nodes.updateTooltipAccessKeys();
- },
-
/**
* The content wrapper of the skin (e.g. `.mw-body`).
*
*/
mw.log.deprecate( util, 'tooltipAccessKeyRegexp', /\[(ctrl-)?(option-)?(alt-)?(shift-)?(esc-)?(.)\]$/, 'Use jquery.accessKeyLabel instead.' );
+ /**
+ * Add the appropriate prefix to the accesskey shown in the tooltip.
+ *
+ * If the `$nodes` parameter is given, only those nodes are updated;
+ * otherwise, depending on browser support, we update either all elements
+ * with accesskeys on the page or a bunch of elements which are likely to
+ * have them on core skins.
+ *
+ * @method updateTooltipAccessKeys
+ * @param {Array|jQuery} [$nodes] A jQuery object, or array of nodes to update.
+ * @deprecated since 1.24 Use the module jquery.accessKeyLabel instead.
+ */
+ mw.log.deprecate( util, 'updateTooltipAccessKeys', function ( $nodes ) {
+ if ( !$nodes ) {
+ if ( document.querySelectorAll ) {
+ // If we're running on a browser where we can do this efficiently,
+ // just find all elements that have accesskeys. We can't use jQuery's
+ // polyfill for the selector since looping over all elements on page
+ // load might be too slow.
+ $nodes = $( document.querySelectorAll( '[accesskey]' ) );
+ } else {
+ // Otherwise go through some elements likely to have accesskeys rather
+ // than looping over all of them. Unfortunately this will not fully
+ // work for custom skins with different HTML structures. Input, label
+ // and button should be rare enough that no optimizations are needed.
+ $nodes = $( '#column-one a, #mw-head a, #mw-panel a, #p-logo a, input, label, button' );
+ }
+ } else if ( !( $nodes instanceof $ ) ) {
+ $nodes = $( $nodes );
+ }
+
+ $nodes.updateTooltipAccessKeys();
+ }, 'Use jquery.accessKeyLabel instead.' );
+
/**
* Add a little box at the top of the screen to inform the user of
* something, replacing any previous message.
return $page;
}
- public function provideCreatePages() {
+ public static function provideCreatePages() {
return array(
array( 'expected article being created',
'EditPageTest_testCreatePage',
$this->assertEquals( '1406833268', $timestamp->__toString() );
}
- public function provideValidTimestampDifferences() {
+ public static function provideValidTimestampDifferences() {
return array(
array( '1406833268', '1406833269', '00 00 00 01' ),
array( '1406833268', '1406833329', '00 00 01 01' ),
$this->assertEquals( $expectedLang, $langProperty->getValue( $message ) );
}
- public function provideConstructor() {
+ public static function provideConstructor() {
$langDe = Language::factory( 'de' );
$langEn = Language::factory( 'en' );
);
}
- public function provideTestParams() {
+ public static function provideTestParams() {
return array(
array( array() ),
array( array( 'foo' ), 'foo' ),
* If you want to run a the same test with a variety of data, use a data provider.
* see: http://www.phpunit.de/manual/3.4/en/writing-tests-for-phpunit.html
*/
- public function provideTitles() {
+ public static function provideTitles() {
return array(
array( 'Text', NS_MEDIA, 'Media:Text' ),
array( 'Text', null, 'Text' ),
$this->assertEquals( $title, $object->current->mTextform );
}
- public function provideNumberOfRows() {
+ public static function provideNumberOfRows() {
return array(
array( 0 ),
array( 1 ),
}
}
- public function provideValidSecureAndSplit() {
+ public static function provideValidSecureAndSplit() {
return array(
array( 'Sandbox' ),
array( 'A "B"' ),
);
}
- public function provideInvalidSecureAndSplit() {
+ public static function provideInvalidSecureAndSplit() {
return array(
array( '' ),
array( ':' ),
}
}
- /**
- * Provides test parameter values for testIsValidMoveOperation()
- */
- public function dataTestIsValidMoveOperation() {
+ public static function provideTestIsValidMoveOperation() {
return array(
array( 'Test', 'Test', 'selfmove' ),
array( 'File:Test.jpg', 'Page', 'imagenocrossnamespace' )
return $result;
}
- public static function provideTestIsValidMoveOperation() {
- return array(
- array( 'Test', 'Test', 'selfmove' ),
- array( 'File:Test.jpg', 'Page', 'imagenocrossnamespace' )
- );
- }
-
/**
* @dataProvider provideGetPageViewLanguage
* @covers Title::getPageViewLanguage
);
}
- public function provideNewFromTitleValue() {
+ public static function provideNewFromTitleValue() {
return array(
array( new TitleValue( NS_MAIN, 'Foo' ) ),
array( new TitleValue( NS_MAIN, 'Foo', 'bar' ) ),
$this->assertEquals( $value->getFragment(), $title->getFragment() );
}
- public function provideGetTitleValue() {
+ public static function provideGetTitleValue() {
return array(
array( 'Foo' ),
array( 'Foo#bar' ),
$this->assertEquals( $title->getFragment(), $value->getFragment() );
}
- public function provideGetFragment() {
+ public static function provideGetFragment() {
return array(
array( 'Foo', '' ),
array( 'Foo#bar', 'bar' ),
$this->assertEquals( $isKnown, $title->isAlwaysKnown() );
}
- public function provideIsAlwaysKnown() {
+ public static function provideIsAlwaysKnown() {
return array(
array( 'Some nonexistent page', false ),
array( 'UTPage', false ),
$this->assertEquals( $username, $object->current->mName );
}
- public function provideNumberOfRows() {
+ public static function provideNumberOfRows() {
return array(
array( 0 ),
array( 1 ),
}
}
- public function provideGetCanonicalName() {
+ public static function provideGetCanonicalName() {
return array(
array( ' trailing space ', array( 'creatable' => 'Trailing space' ), 'Trailing spaces' ),
// @todo FIXME: Maybe the createable name should be 'Talk:Username' or false to reject?
$this->assertEquals( $value, $obj->value );
}
- public function provideConstruction() {
+ public static function provideConstruction() {
return array(
array( null ),
array( '' ),
parent::setUp();
$this->setMwGlobals( array(
- 'wgArticlePath' => '/wiki/$1'
+ 'wgArticlePath' => '/wiki/$1',
+ 'wgLang' => Language::factory( 'qqx' )
) );
}
$line = $oldChangesList->recentChangesLine( $recentChange, false, 1 );
- $message = new Message( 'dellogpage' );
- $expectedLinkText = $message->inLanguage( 'en' )->text();
-
$this->assertRegExp( '/href="\/wiki\/Special:Log\/delete/', $line, 'link has href attribute' );
$this->assertRegExp( '/title="Special:Log\/delete/', $line, 'link has title attribute' );
- $this->assertRegExp( "/$expectedLinkText/", $line, 'link text' );
+ $this->assertRegExp( "/dellogpage/", $line, 'link text' );
}
public function testRecentChangesLine_DiffHistLinks() {
$line = $oldChangesList->recentChangesLine( $recentChange, false, 1 );
- $this->assertRegExp(
- "/<abbr class='newpage' title='This edit created a new page'>N<\/abbr>/",
+ $this->assertContains(
+ "<abbr class='newpage' title='(recentchanges-label-newpage)'>(newpageletter)</abbr>",
$line,
'new page flag'
);
- $this->assertRegExp(
- "/<abbr class='botedit' title='This edit was performed by a bot'>b<\/abbr>/",
+ $this->assertContains(
+ "<abbr class='botedit' title='(recentchanges-label-bot)'>(boteditletter)</abbr>",
$line,
'bot flag'
);
private function getContext() {
$user = $this->getTestUser();
$context = $this->testRecentChangesHelper->getTestContext( $user );
-
- $title = Title::newFromText( 'RecentChanges', NS_SPECIAL );
- $context->setTitle( $title );
+ $context->setLanguage( Language::factory( 'qqx' ) );
return $context;
}
$context->setUser( $user );
+ $title = Title::newFromText( 'RecentChanges', NS_SPECIAL );
+ $context->setTitle( $title );
+
return $context;
}
}
);
}
- public function provideGet() {
+ /**
+ * @covers GlobalVarConfig::has
+ */
+ public function testHas() {
+ $this->maybeStashGlobal( 'wgGlobalVarConfigTestHas' );
+ $GLOBALS['wgGlobalVarConfigTestHas'] = wfRandomString();
+ $this->maybeStashGlobal( 'wgGlobalVarConfigTestNotHas' );
+ $config = new GlobalVarConfig();
+ $this->assertTrue( $config->has( 'GlobalVarConfigTestHas' ) );
+ $this->assertFalse( $config->has( 'GlobalVarConfigTestNotHas' ) );
+ }
+
+ public static function provideGet() {
$set = array(
'wgSomething' => 'default1',
'wgFoo' => 'default2',
public function testGet( $name, $prefix, $expected ) {
$config = new GlobalVarConfig( $prefix );
if ( $expected === false ) {
- $this->setExpectedException( 'ConfigException', 'GlobalVarConfig::getWithPrefix: undefined variable:' );
+ $this->setExpectedException( 'ConfigException', 'GlobalVarConfig::get: undefined option:' );
}
$this->assertEquals( $config->get( $name ), $expected );
}
--- /dev/null
+<?php
+
+class HashConfigTest extends MediaWikiTestCase {
+
+ /**
+ * @covers HashConfig::newInstance
+ */
+ public function testNewInstance() {
+ $conf = HashConfig::newInstance();
+ $this->assertInstanceOf( 'HashConfig', $conf );
+ }
+
+ /**
+ * @covers HashConfig::__construct
+ */
+ public function testConstructor() {
+ $conf = new HashConfig();
+ $this->assertInstanceOf( 'HashConfig', $conf );
+
+ // Test passing arguments to the constructor
+ $conf2 = new HashConfig( array(
+ 'one' => '1',
+ ) );
+ $this->assertEquals( '1', $conf2->get( 'one' ) );
+ }
+
+ /**
+ * @covers HashConfig::get
+ */
+ public function testGet() {
+ $conf = new HashConfig( array(
+ 'one' => '1',
+ ));
+ $this->assertEquals( '1', $conf->get( 'one' ) );
+ $this->setExpectedException( 'ConfigException', 'HashConfig::get: undefined option' );
+ $conf->get( 'two' );
+ }
+
+ /**
+ * @covers HashConfig::has
+ */
+ public function testHas() {
+ $conf = new HashConfig( array(
+ 'one' => '1',
+ ) );
+ $this->assertTrue( $conf->has( 'one' ) );
+ $this->assertFalse( $conf->has( 'two' ) );
+ }
+
+ /**
+ * @covers HashConfig::set
+ */
+ public function testSet() {
+ $conf = new HashConfig( array(
+ 'one' => '1',
+ ) );
+ $conf->set( 'two', '2' );
+ $this->assertEquals( '2', $conf->get( 'two' ) );
+ // Check that set overwrites
+ $conf->set( 'one', '3' );
+ $this->assertEquals( '3', $conf->get( 'one' ) );
+ }
+}
\ No newline at end of file
--- /dev/null
+<?php
+
+class MultiConfigTest extends MediaWikiTestCase {
+
+ /**
+ * Tests that settings are fetched in the right order
+ *
+ * @covers MultiConfig::get
+ */
+ public function testGet() {
+ $multi = new MultiConfig( array(
+ new HashConfig( array( 'foo' => 'bar' ) ),
+ new HashConfig( array( 'foo' => 'baz', 'bar' => 'foo' ) ),
+ new HashConfig( array( 'bar' => 'baz' ) ),
+ ) );
+
+ $this->assertEquals( 'bar', $multi->get( 'foo' ) );
+ $this->assertEquals( 'foo', $multi->get( 'bar' ) );
+ $this->setExpectedException( 'ConfigException', 'MultiConfig::get: undefined option:' );
+ $multi->get( 'notset' );
+ }
+
+ /**
+ * @covers MultiConfig::has
+ */
+ public function testHas() {
+ $conf = new MultiConfig( array(
+ new HashConfig( array( 'foo' => 'foo' ) ),
+ new HashConfig( array( 'something' => 'bleh' ) ),
+ new HashConfig( array( 'meh' => 'eh' ) ),
+ ) );
+
+ $this->assertTrue( $conf->has( 'foo' ) );
+ $this->assertTrue( $conf->has( 'something' ) );
+ $this->assertTrue( $conf->has( 'meh' ) );
+ $this->assertFalse( $conf->has( 'what' ) );
+ }
+}
$this->assertEquals( $expected, $obj->getJsonData() );
}
- public function provideValidConstruction() {
+ public static function provideValidConstruction() {
return array(
array( 'foo', CONTENT_MODEL_JSON, false, null ),
array( FormatJson::encode( array() ), CONTENT_MODEL_JSON, true, array() ),
$this->assertEquals( FormatJson::encode( $data, true ), $obj->beautifyJSON() );
}
- public function provideDataToEncode() {
+ public static function provideDataToEncode() {
return array(
array( array() ),
array( array( 'foo' ) ),
$obj = new JsonContent( FormatJson::encode( $data ) );
$parserOutput = $obj->getParserOutput( $this->getMockTitle(), null, null, true );
$this->assertInstanceOf( 'ParserOutput', $parserOutput );
-// var_dump( $parserOutput->getText(), "\n" );
$this->assertEquals( $expected, $parserOutput->getText() );
}
- public function provideDataAndParserText() {
+ public static function provideDataAndParserText() {
return array(
array(
array(),
$this->assertEquals( $expectedReturn, $e->runHooks( $name, $args ) );
}
- public function provideRunHooks() {
+ public static function provideRunHooks() {
return array(
array( null, null, null, null ),
array( array(), 'name', array(), null ),
$this->assertEquals( $expected, $e->isCommandLine() );
}
- public function provideIsCommandLine() {
+ public static function provideIsCommandLine() {
return array(
array( false, null ),
array( true, true ),
"The $exception_class exception should be JSON serializable, got false." );
}
- public function provideExceptionClasses() {
+ public static function provideExceptionClasses() {
return array(
array( 'Exception' ),
array( 'MWException' ),
/**
* Returns test cases: exception class, key name, gettype()
*/
- public function provideJsonSerializedKeys() {
+ public static function provideJsonSerializedKeys() {
$testCases = array();
foreach ( array( 'Exception', 'MWException' ) as $exClass ) {
$exTests = array(
* config is an array constructor argument for IPSet, and the tests are
* an array of IP => expected (boolean) result against the config dataset.
*/
- public function provider() {
+ public static function provideIPSets() {
return array(
array(
'old_list_subset',
* Validates IPSet loading and matching code
*
* @covers IPSet
- * @dataProvider provider
+ * @dataProvider provideIPSets
*/
public function testIPSet( $desc, array $cfg, array $tests ) {
$ipset = new IPSet( $cfg );
* using <https://github.com/msgpack/msgpack-php>, which includes a
* serialization function.
*/
- public function provider() {
+ public static function providePacks() {
$tests = array(
array( 'nil', null, 'c0' ),
array( 'bool', true, 'c3' ),
/**
* Verify that values are serialized correctly.
* @covers MWMessagePack::pack
- * @dataProvider provider
+ * @dataProvider providePacks
*/
public function testPack( $type, $value, $expected ) {
$actual = bin2hex( MWMessagePack::pack( $value ) );
$this->assertEquals( $expected, $actual );
}
- public function provideGetIndependentMetaArray() {
+ public static function provideGetIndependentMetaArray() {
return array(
array( 'nonanimated.gif', array(
'GIFFileComment' => array(
$this->assertEquals( $expected, $actual );
}
- public function provideGetIndependentMetaArray() {
+ public static function provideGetIndependentMetaArray() {
return array(
array( 'rgb-na-png.png', array() ),
array( 'xmp.png',
$this->assertEquals( $res, $expected );
}
- public function providerGetIndependentMetaArray() {
+ public static function providerGetIndependentMetaArray() {
return array(
array( 'Tux.svg', array(
'ObjectName' => 'Tux',
}
/** @todo document */
- public function provideAllBytes() {
+ public static function provideAllBytes() {
return array(
array( '', '' ),
array( 'x', '' ),
$this->assertEquals( $expected, $text, $msg );
}
- public function provideTestWrapping() {
+ public static function provideTestWrapping() {
$testMathML = <<<'MathML'
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mrow>
) );
}
- public function providePasswordTests() {
+ public static function providePasswordTests() {
/** @codingStandardsIgnoreStart Generic.Files.LineLength.TooLong */
return array(
// Tests from glibc bcrypt implementation
);
}
- public function providePasswordTests() {
+ public static function providePasswordTests() {
/** @codingStandardsIgnoreStart Generic.Files.LineLength.TooLong */
return array(
array( true, ':testLargeLayeredTop:sha512:1024:512!sha512:1024:512!sha512:1024:512!sha512:1024:512!5!vnRy+2SrSA0fHt3dwhTP5g==!AVnwfZsAQjn+gULv7FSGjA==!xvHUX3WcpkeSn1lvjWcvBg==!It+OC/N9tu+d3ByHhuB0BQ==!Tb.gqUOiD.aWktVwHM.Q/O!7CcyMfXUPky5ptyATJsR2nq3vUqtnBC', 'testPassword123' ),
*
* @return array
*/
- abstract public function providePasswordTests();
+ abstract public static function providePasswordTests();
/**
* @dataProvider providePasswordTests
) );
}
- public function providePasswordTests() {
+ public static function providePasswordTests() {
return array(
array( true, ":pbkdf2:sha1:1:20:c2FsdA==:DGDID5YfDnHzqbUkr2ASBi/gN6Y=", 'password' ),
array( true, ":pbkdf2:sha1:2:20:c2FsdA==:6mwBTcctb4zNHtkqzh1B8NjeiVc=", 'password' ),
$this->assertEquals( $expected, $module->isKnownEmpty( $context ) );
}
- public function provideIsKnownEmpty() {
+ public static function provideIsKnownEmpty() {
return array(
// No valid pages
array( array(), 'test1', true ),
--- /dev/null
+<?php
+/**
+ * Factory for handling the special page list and generating SpecialPage objects.
+ *
+ * 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
+ *
+ * @covers SpecialPageFactory
+ * @group SpecialPage
+ */
+class SpecialPageFactoryTest extends MediaWikiTestCase {
+
+ public function newSpecialAllPages() {
+ return new SpecialAllPages();
+ }
+
+ public function specialPageProvider() {
+ return array(
+ 'class name' => array( 'SpecialAllPages', false ),
+ 'closure' => array( function() {
+ return new SpecialAllPages();
+ }, false ),
+ 'function' => array( array( $this, 'newSpecialAllPages' ), false ),
+ );
+ }
+
+ /**
+ * @dataProvider specialPageProvider
+ */
+ public function testGetPage( $spec, $shouldReuseInstance ) {
+ $this->mergeMwGlobalArrayValue( 'wgSpecialPages', array( 'testdummy' => $spec ) );
+
+ SpecialPageFactory::resetList();
+
+ $page = SpecialPageFactory::getPage( 'testdummy' );
+ $this->assertInstanceOf( 'SpecialPage', $page );
+
+ $page2 = SpecialPageFactory::getPage( 'testdummy' );
+ $this->assertEquals( $shouldReuseInstance, $page2 === $page, "Should re-use instance:" );
+
+ SpecialPageFactory::resetList();
+ }
+
+ public function testGetNames() {
+ $this->mergeMwGlobalArrayValue( 'wgSpecialPages', array( 'testdummy' => 'SpecialAllPages' ) );
+
+ SpecialPageFactory::resetList();
+ $names = SpecialPageFactory::getNames();
+ $this->assertInternalType( 'array', $names );
+ $this->assertContains( 'testdummy', $names );
+ SpecialPageFactory::resetList();
+ }
+
+ public function testResolveAlias() {
+ $this->setMwGlobals( 'wgContLang', Language::factory( 'de' ) );
+
+ SpecialPageFactory::resetList();
+
+ list( $name, $param ) = SpecialPageFactory::resolveAlias( 'Spezialseiten/Foo' );
+ $this->assertEquals( 'Specialpages', $name );
+ $this->assertEquals( 'Foo', $param );
+
+ SpecialPageFactory::resetList();
+ }
+
+ public function testGetLocalNameFor() {
+ $this->setMwGlobals( 'wgContLang', Language::factory( 'de' ) );
+
+ SpecialPageFactory::resetList();
+
+ $name = SpecialPageFactory::getLocalNameFor( 'Specialpages', 'Foo' );
+ $this->assertEquals( 'Spezialseiten/Foo', $name );
+
+ SpecialPageFactory::resetList();
+ }
+
+ public function testGetTitleForAlias() {
+ $this->setMwGlobals( 'wgContLang', Language::factory( 'de' ) );
+
+ SpecialPageFactory::resetList();
+
+ $title = SpecialPageFactory::getTitleForAlias( 'Specialpages/Foo' );
+ $this->assertEquals( 'Spezialseiten/Foo', $title->getText() );
+ $this->assertEquals( NS_SPECIAL, $title->getNamespace() );
+
+ SpecialPageFactory::resetList();
+ }
+
+}
$this->assertEquals( $expected, $title );
}
- public function provideFindTitle() {
+ public static function provideFindTitle() {
return array(
array( null, '::Fail', 'en', 'en' ),
array( 'Page/Another', 'Page/Another/en', 'en', 'en' ),
return $genderCache;
}
- public function provideGetPageUrl() {
+ public static function provideGetPageUrl() {
return array(
array(
new TitleValue( NS_MAIN, 'Foo_Bar' ),
$this->assertEquals( $url, $actual );
}
- public function provideRenderHtmlLink() {
+ public static function provideRenderHtmlLink() {
return array(
array(
new TitleValue( NS_MAIN, 'Foo_Bar' ),
$this->assertRegExp( $pattern, $actual );
}
- public function provideRenderWikitextLink() {
+ public static function provideRenderWikitextLink() {
return array(
array(
new TitleValue( NS_MAIN, 'Foo_Bar' ),
return new MediaWikiTitleCodec( $lang, $gender );
}
- public function provideFormat() {
+ public static function provideFormat() {
return array(
array( NS_MAIN, 'Foo_Bar', '', 'en', 'Foo Bar' ),
array( NS_USER, 'Hansi_Maier', 'stuff_and_so_on', 'en', 'User:Hansi Maier#stuff and so on' ),
$this->assertEquals( $normalized, $actual2, 'normalized after round trip' );
}
- public function provideGetText() {
+ public static function provideGetText() {
return array(
array( NS_MAIN, 'Foo_Bar', '', 'en', 'Foo Bar' ),
array( NS_USER, 'Hansi_Maier', 'stuff_and_so_on', 'en', 'Hansi Maier' ),
$this->assertEquals( $expected, $actual );
}
- public function provideGetPrefixedText() {
+ public static function provideGetPrefixedText() {
return array(
array( NS_MAIN, 'Foo_Bar', '', 'en', 'Foo Bar' ),
array( NS_USER, 'Hansi_Maier', 'stuff_and_so_on', 'en', 'User:Hansi Maier' ),
$this->assertEquals( $expected, $actual );
}
- public function provideGetFullText() {
+ public static function provideGetFullText() {
return array(
array( NS_MAIN, 'Foo_Bar', '', 'en', 'Foo Bar' ),
array( NS_USER, 'Hansi_Maier', 'stuff_and_so_on', 'en', 'User:Hansi Maier#stuff and so on' ),
$this->assertEquals( $expected, $actual );
}
- public function provideParseTitle() {
+ public static function provideParseTitle() {
//TODO: test capitalization and trimming
//TODO: test unicode normalization
$this->assertEquals( $title, $actual );
}
- public function provideParseTitle_invalid() {
+ public static function provideParseTitle_invalid() {
//TODO: test unicode errors
return array(
$codec->parseTitle( $text, NS_MAIN );
}
- public function provideGetNamespaceName() {
+ public static function provideGetNamespaceName() {
return array(
array( NS_MAIN, 'Foo', 'en', '' ),
array( NS_USER, 'Foo', 'en', 'User' ),
$stash->removeFile( $file->getFileKey() );
}
- public function provideInvalidRequests() {
+ public static function provideInvalidRequests() {
return array(
'Check failure on bad wpFileKey' =>
array( new FauxRequest( array( 'wpFileKey' => 'foo' ) ) ),
$this->assertFalse( UploadFromStash::isValidRequest( $request ) );
}
- public function provideValidRequests() {
+ public static function provideValidRequests() {
return array(
'Check good wpFileKey' =>
array( new FauxRequest( array( 'wpFileKey' => 'testkey-test.test' ) ) ),