From: jenkins-bot Date: Wed, 9 May 2018 20:00:14 +0000 (+0000) Subject: Merge "resourceloader: Remove elaborate dom-based console shim" X-Git-Tag: 1.34.0-rc.0~5471 X-Git-Url: https://git.cyclocoop.org/%27.WWW_URL.%27admin/?a=commitdiff_plain;h=51aa746104cea7a3b9b2c0f9c6d5ad23eb1c8724;hp=ff791194c251c832038200b9cc495ef4bf9e191b;p=lhc%2Fweb%2Fwiklou.git Merge "resourceloader: Remove elaborate dom-based console shim" --- diff --git a/composer.json b/composer.json index 6e34ec2f96..8de402561b 100644 --- a/composer.json +++ b/composer.json @@ -24,7 +24,7 @@ "ext-mbstring": "*", "ext-xml": "*", "liuggio/statsd-php-client": "1.0.18", - "oojs/oojs-ui": "0.26.5", + "oojs/oojs-ui": "0.27.0", "oyejorge/less.php": "1.7.0.14", "php": ">=5.5.9", "psr/log": "1.0.2", diff --git a/includes/ServiceWiring.php b/includes/ServiceWiring.php index f97d60df02..ee92cbfecf 100644 --- a/includes/ServiceWiring.php +++ b/includes/ServiceWiring.php @@ -404,24 +404,8 @@ return [ }, 'LocalServerObjectCache' => function ( MediaWikiServices $services ) { - $mainConfig = $services->getMainConfig(); - - if ( function_exists( 'apc_fetch' ) ) { - $id = 'apc'; - } elseif ( function_exists( 'apcu_fetch' ) ) { - $id = 'apcu'; - } elseif ( function_exists( 'wincache_ucache_get' ) ) { - $id = 'wincache'; - } else { - $id = CACHE_NONE; - } - - if ( !isset( $mainConfig->get( 'ObjectCaches' )[$id] ) ) { - throw new UnexpectedValueException( - "Cache type \"$id\" is not present in \$wgObjectCaches." ); - } - - return \ObjectCache::newFromParams( $mainConfig->get( 'ObjectCaches' )[$id] ); + $cacheId = \ObjectCache::detectLocalServerCache(); + return \ObjectCache::newFromId( $cacheId ); }, 'VirtualRESTServiceClient' => function ( MediaWikiServices $services ) { diff --git a/includes/installer/MssqlUpdater.php b/includes/installer/MssqlUpdater.php index 2e339997c4..e389135be6 100644 --- a/includes/installer/MssqlUpdater.php +++ b/includes/installer/MssqlUpdater.php @@ -128,6 +128,9 @@ class MssqlUpdater extends DatabaseUpdater { [ 'modifyField', 'recentchanges', 'rc_patrolled', 'patch-rc_patrolled_type.sql' ], [ 'addIndex', 'recentchanges', 'rc_namespace_title_timestamp', 'patch-recentchanges-nttindex.sql' ], + + // 1.32 + [ 'addTable', 'change_tag_def', 'patch-change_tag_def.sql' ], ]; } diff --git a/includes/installer/MysqlUpdater.php b/includes/installer/MysqlUpdater.php index 60bb69fdeb..b4bb194195 100644 --- a/includes/installer/MysqlUpdater.php +++ b/includes/installer/MysqlUpdater.php @@ -348,6 +348,9 @@ class MysqlUpdater extends DatabaseUpdater { [ 'populateArchiveRevId' ], [ 'addIndex', 'recentchanges', 'rc_namespace_title_timestamp', 'patch-recentchanges-nttindex.sql' ], + + // 1.32 + [ 'addTable', 'change_tag_def', 'patch-change_tag_def.sql' ], ]; } diff --git a/includes/installer/OracleUpdater.php b/includes/installer/OracleUpdater.php index 737b1728fa..b08e26f0ab 100644 --- a/includes/installer/OracleUpdater.php +++ b/includes/installer/OracleUpdater.php @@ -148,6 +148,9 @@ class OracleUpdater extends DatabaseUpdater { [ 'addIndex', 'recentchanges', 'rc_namespace_title_timestamp', 'patch-recentchanges-nttindex.sql' ], + // 1.32 + [ 'addTable', 'change_tag_def', 'patch-change_tag_def.sql' ], + // KEEP THIS AT THE BOTTOM!! [ 'doRebuildDuplicateFunction' ], diff --git a/includes/installer/PostgresUpdater.php b/includes/installer/PostgresUpdater.php index 5026ae924c..c72e206a55 100644 --- a/includes/installer/PostgresUpdater.php +++ b/includes/installer/PostgresUpdater.php @@ -569,6 +569,9 @@ class PostgresUpdater extends DatabaseUpdater { [ 'setSequenceOwner', 'change_tag', 'ct_id', 'change_tag_ct_id_seq' ], [ 'setSequenceOwner', 'tag_summary', 'ts_id', 'tag_summary_ts_id_seq' ], [ 'setSequenceOwner', 'sites', 'site_id', 'sites_site_id_seq' ], + + // 1.32 + [ 'addTable', 'change_tag_def', 'patch-change_tag_def.sql' ], ]; } diff --git a/includes/installer/SqliteUpdater.php b/includes/installer/SqliteUpdater.php index b107fd11ec..76e1ca968f 100644 --- a/includes/installer/SqliteUpdater.php +++ b/includes/installer/SqliteUpdater.php @@ -212,6 +212,9 @@ class SqliteUpdater extends DatabaseUpdater { [ 'populateArchiveRevId' ], [ 'addIndex', 'recentchanges', 'rc_namespace_title_timestamp', 'patch-recentchanges-nttindex.sql' ], + + // 1.32 + [ 'addTable', 'change_tag_def', 'patch-change_tag_def.sql' ], ]; } diff --git a/includes/objectcache/ObjectCache.php b/includes/objectcache/ObjectCache.php index a6f55e6026..c384032220 100644 --- a/includes/objectcache/ObjectCache.php +++ b/includes/objectcache/ObjectCache.php @@ -413,4 +413,21 @@ class ObjectCache { self::$instances = []; self::$wanInstances = []; } + + /** + * Detects which local server cache library is present and returns a configuration for it + * @since 1.32 + * + * @return int|string Index to cache in $wgObjectCaches + */ + public static function detectLocalServerCache() { + if ( function_exists( 'apc_fetch' ) ) { + return 'apc'; + } elseif ( function_exists( 'apcu_fetch' ) ) { + return 'apcu'; + } elseif ( function_exists( 'wincache_ucache_get' ) ) { + return 'wincache'; + } + return CACHE_NONE; + } } diff --git a/includes/registration/ExtensionRegistry.php b/includes/registration/ExtensionRegistry.php index b000dc11b1..b34a123635 100644 --- a/includes/registration/ExtensionRegistry.php +++ b/includes/registration/ExtensionRegistry.php @@ -1,7 +1,5 @@ getLocalServerObjectCache(); + // Don't use MediaWikiServices here to prevent instantiating it before extensions have + // been loaded + $cacheId = ObjectCache::detectLocalServerCache(); + $cache = ObjectCache::newFromId( $cacheId ); } catch ( MWException $e ) { $cache = new EmptyBagOStuff(); } diff --git a/includes/user/User.php b/includes/user/User.php index 5a5139d66c..e235c18928 100644 --- a/includes/user/User.php +++ b/includes/user/User.php @@ -5663,11 +5663,12 @@ class User implements IDBAccessObject, UserIdentity { /** * Checks if two user objects point to the same user. * - * @since 1.25 - * @param User $user + * @since 1.25 ; takes a UserIdentity instead of a User since 1.32 + * @param UserIdentity $user * @return bool */ - public function equals( User $user ) { + public function equals( UserIdentity $user ) { + // XXX it's not clear whether central ID providers are supposed to obey this return $this->getName() === $user->getName(); } } diff --git a/includes/user/UserIdentity.php b/includes/user/UserIdentity.php index d02a67888c..ac9bbec3f1 100644 --- a/includes/user/UserIdentity.php +++ b/includes/user/UserIdentity.php @@ -54,4 +54,12 @@ interface UserIdentity { // TODO: we may want to (optionally?) provide a global ID, see CentralIdLookup. + /** + * @since 1.32 + * + * @param UserIdentity $user + * @return bool + */ + public function equals( UserIdentity $user ); + } diff --git a/includes/user/UserIdentityValue.php b/includes/user/UserIdentityValue.php index 120f31f24d..d1fd19de52 100644 --- a/includes/user/UserIdentityValue.php +++ b/includes/user/UserIdentityValue.php @@ -82,4 +82,15 @@ class UserIdentityValue implements UserIdentity { return $this->actor; } + /** + * @since 1.32 + * + * @param UserIdentity $user + * @return bool + */ + public function equals( UserIdentity $user ) { + // XXX it's not clear whether central ID providers are supposed to obey this + return $this->getName() === $user->getName(); + } + } diff --git a/jsduck.json b/jsduck.json index 6fb4544290..40af236ff0 100644 --- a/jsduck.json +++ b/jsduck.json @@ -9,33 +9,24 @@ "--warnings-exit-nonzero": true, "--external": "Blob,File,HTMLDocument,HTMLElement,HTMLIframeElement,HTMLInputElement,KeyboardEvent,MouseEvent,Node,Window,XMLDocument", "--output": "docs/js", - "--exclude": "resources/src/mediawiki/mediawiki.Title.phpCharToUpper.js", + "--exclude": [ + "resources/src/jquery.tablesorter", + "resources/src/jquery.tipsy", + "resources/src/jquery/jquery.color.js", + "resources/src/jquery/jquery.expandableField.js", + "resources/src/jquery/jquery.farbtastic.css", + "resources/src/jquery/jquery.farbtastic.js", + "resources/src/jquery/jquery.highlightText.js", + "resources/src/jquery/jquery.mw-jump.js", + "resources/src/mediawiki.legacy", + "resources/src/mediawiki.libs.jpegmeta/jpegmeta.js", + "resources/src/mediawiki.skinning", + "resources/src/mediawiki/mediawiki.Title.phpCharToUpper.js", + "resources/src/startup.js" + ], "--": [ "maintenance/jsduck/external.js", - "resources/src/mediawiki", - "resources/src/mediawiki.action", - "resources/src/mediawiki.language", - "resources/src/mediawiki.messagePoster", - "resources/src/mediawiki.rcfilters", - "resources/src/mediawiki.special", - "resources/src/mediawiki.toolbar", - "resources/src/mediawiki.widgets", - "resources/src/mediawiki.widgets.visibleLengthLimit", - "resources/src/jquery/jquery.accessKeyLabel.js", - "resources/src/jquery/jquery.byteLength.js", - "resources/src/jquery/jquery.checkboxShiftClick.js", - "resources/src/jquery/jquery.colorUtil.js", - "resources/src/jquery/jquery.confirmable.js", - "resources/src/jquery/jquery.footHovzer.js", - "resources/src/jquery/jquery.getAttrs.js", - "resources/src/jquery/jquery.hidpi.js", - "resources/src/jquery/jquery.lengthLimit.js", - "resources/src/jquery/jquery.localize.js", - "resources/src/jquery/jquery.makeCollapsible.js", - "resources/src/jquery/jquery.spinner.js", - "resources/src/jquery/jquery.suggestions.js", - "resources/src/jquery/jquery.tabIndex.js", - "resources/src/jquery/jquery.textSelection.js", + "resources/src", "resources/lib/jquery.client/jquery.client.js", "resources/lib/oojs/oojs.jquery.js", "resources/lib/oojs-ui/oojs-ui-core.js", diff --git a/maintenance/archives/patch-change_tag_def.sql b/maintenance/archives/patch-change_tag_def.sql new file mode 100644 index 0000000000..2b6b75f22d --- /dev/null +++ b/maintenance/archives/patch-change_tag_def.sql @@ -0,0 +1,16 @@ +-- Table defining tag names for IDs. Also stores hit counts to avoid expensive queries on change_tag + +CREATE TABLE /*_*/change_tag_def ( + -- Numerical ID of the tag (ct_tag_id refers to this) + ctd_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT, + -- Symbolic name of the tag (what would previously be put in ct_tag) + ctd_name varbinary(255) NOT NULL, + -- Whether this tag was defined manually by a privileged user using Special:Tags + ctd_user_defined tinyint(1) NOT NULL, + -- Number of times this tag was used + ctd_count bigint unsigned NOT NULL default 0 +) /*$wgDBTableOptions*/; + +CREATE UNIQUE INDEX /*i*/ctd_name ON /*_*/change_tag_def (ctd_name); +CREATE INDEX /*i*/ctd_count ON /*_*/change_tag_def (ctd_count); +CREATE INDEX /*i*/ctd_user_defined ON /*_*/change_tag_def (ctd_user_defined); \ No newline at end of file diff --git a/maintenance/mssql/archives/patch-change_tag_def.sql b/maintenance/mssql/archives/patch-change_tag_def.sql new file mode 100644 index 0000000000..1ddeb0174d --- /dev/null +++ b/maintenance/mssql/archives/patch-change_tag_def.sql @@ -0,0 +1,16 @@ +-- Table defining tag names for IDs. Also stores hit counts to avoid expensive queries on change_tag + +CREATE TABLE /*_*/change_tag_def ( + -- Numerical ID of the tag (ct_tag_id refers to this) + ctd_id int NOT NULL CONSTRAINT PK_change_tag_def PRIMARY KEY IDENTITY, + -- Symbolic name of the tag (what would previously be put in ct_tag) + ctd_name nvarchar(255) NOT NULL, + -- Whether this tag was defined manually by a privileged user using Special:Tags + ctd_user_defined tinyint NOT NULL CONSTRAINT DF_ctd_user_defined DEFAULT 0, + -- Number of times this tag was used + ctd_count int NOT NULL CONSTRAINT DF_ctd_count DEFAULT 0 +) /*$wgDBTableOptions*/; + +CREATE UNIQUE INDEX /*i*/ctd_name ON /*_*/change_tag_def (ctd_name); +CREATE INDEX /*i*/ctd_count ON /*_*/change_tag_def (ctd_count); +CREATE INDEX /*i*/ctd_user_defined ON /*_*/change_tag_def (ctd_user_defined); diff --git a/maintenance/mssql/tables.sql b/maintenance/mssql/tables.sql index 0c78712ad9..858260b34b 100644 --- a/maintenance/mssql/tables.sql +++ b/maintenance/mssql/tables.sql @@ -503,6 +503,24 @@ CREATE UNIQUE INDEX /*i*/cat_title ON /*_*/category (cat_title); CREATE INDEX /*i*/cat_pages ON /*_*/category (cat_pages); +-- +-- Table defining tag names for IDs. Also stores hit counts to avoid expensive queries on change_tag +-- +CREATE TABLE /*_*/change_tag_def ( + -- Numerical ID of the tag (ct_tag_id refers to this) + ctd_id int NOT NULL CONSTRAINT PK_change_tag_def PRIMARY KEY IDENTITY, + -- Symbolic name of the tag (what would previously be put in ct_tag) + ctd_name nvarchar(255) NOT NULL, + -- Whether this tag was defined manually by a privileged user using Special:Tags + ctd_user_defined tinyint NOT NULL CONSTRAINT DF_ctd_user_defined DEFAULT 0, + -- Number of times this tag was used + ctd_count int NOT NULL CONSTRAINT DF_ctd_count DEFAULT 0 +) /*$wgDBTableOptions*/; + +CREATE UNIQUE INDEX /*i*/ctd_name ON /*_*/change_tag_def (ctd_name); +CREATE INDEX /*i*/ctd_count ON /*_*/change_tag_def (ctd_count); +CREATE INDEX /*i*/ctd_user_defined ON /*_*/change_tag_def (ctd_user_defined); + -- -- Track links to external URLs -- diff --git a/maintenance/oracle/archives/patch-change_tag_def.sql b/maintenance/oracle/archives/patch-change_tag_def.sql new file mode 100644 index 0000000000..6bf77723de --- /dev/null +++ b/maintenance/oracle/archives/patch-change_tag_def.sql @@ -0,0 +1,25 @@ +-- Table defining tag names for IDs. Also stores hit counts to avoid expensive queries on change_tag +CREATE SEQUENCE change_tag_def_ctd_id_seq; +CREATE TABLE &mw_prefix.change_tag_def ( + -- Numerical ID of the tag (ct_tag_id refers to this) + ctd_id NUMBER NOT NULL, + -- Symbolic name of the tag (what would previously be put in ct_tag) + ctd_name VARCHAR2(255) NOT NULL, + -- Whether this tag was defined manually by a privileged user using Special:Tags + ctd_user_defined CHAR(1) DEFAULT '0' NOT NULL, + -- Number of times this tag was used + ctd_count NUMBER NOT NULL DEFAULT 0 +); + +ALTER TABLE &mw_prefix.change_tag_def ADD CONSTRAINT &mw_prefix.change_tag_def_pk PRIMARY KEY (ctd_id); +CREATE UNIQUE INDEX &mw_prefix.ctd_name ON &mw_prefix.change_tag_def (ctd_name); +CREATE INDEX &mw_prefix.ctd_count ON &mw_prefix.change_tag_def (ctd_count); +CREATE INDEX &mw_prefix.ctd_user_defined ON &mw_prefix.change_tag_def (ctd_user_defined); + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.change_tag_def_seq_trg BEFORE INSERT ON &mw_prefix.change_tag_def + FOR EACH ROW WHEN (new.ctd_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(change_tag_def_ctd_id_seq.nextval, :new.ctd_id); +END; +/*$mw$*/ \ No newline at end of file diff --git a/maintenance/oracle/tables.sql b/maintenance/oracle/tables.sql index 87039fb090..df74f649f5 100644 --- a/maintenance/oracle/tables.sql +++ b/maintenance/oracle/tables.sql @@ -436,6 +436,32 @@ BEGIN END; /*$mw$*/ +-- Table defining tag names for IDs. Also stores hit counts to avoid expensive queries on change_tag +CREATE SEQUENCE change_tag_def_ctd_id_seq; +CREATE TABLE &mw_prefix.change_tag_def ( + -- Numerical ID of the tag (ct_tag_id refers to this) + ctd_id NUMBER NOT NULL, + -- Symbolic name of the tag (what would previously be put in ct_tag) + ctd_name VARCHAR2(255) NOT NULL, + -- Whether this tag was defined manually by a privileged user using Special:Tags + ctd_user_defined CHAR(1) DEFAULT '0' NOT NULL, + -- Number of times this tag was used + ctd_count NUMBER NOT NULL DEFAULT 0 +); + +ALTER TABLE &mw_prefix.change_tag_def ADD CONSTRAINT &mw_prefix.change_tag_def_pk PRIMARY KEY (ctd_id); +CREATE UNIQUE INDEX &mw_prefix.ctd_name ON &mw_prefix.change_tag_def (ctd_name); +CREATE INDEX &mw_prefix.ctd_count ON &mw_prefix.change_tag_def (ctd_count); +CREATE INDEX &mw_prefix.ctd_user_defined ON &mw_prefix.change_tag_def (ctd_user_defined); + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.change_tag_def_seq_trg BEFORE INSERT ON &mw_prefix.change_tag_def + FOR EACH ROW WHEN (new.ctd_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(change_tag_def_ctd_id_seq.nextval, :new.ctd_id); +END; +/*$mw$*/ + CREATE TABLE &mw_prefix.langlinks ( ll_from NUMBER NOT NULL, ll_lang VARCHAR2(20), diff --git a/maintenance/postgres/archives/patch-change_tag_def.sql b/maintenance/postgres/archives/patch-change_tag_def.sql new file mode 100644 index 0000000000..c16597d643 --- /dev/null +++ b/maintenance/postgres/archives/patch-change_tag_def.sql @@ -0,0 +1,14 @@ +-- Table defining tag names for IDs. Also stores hit counts to avoid expensive queries on change_tag + +CREATE SEQUENCE change_tag_def_ctd_id_seq; +CREATE TABLE change_tag_def ( + ctd_id int NOT NULL PRIMARY KEY DEFAULT nextval('change_tag_def_ctd_id_seq'), + ctd_name TEXT NOT NULL, + ctd_user_defined SMALLINT NOT NULL DEFAULT 0, + ctd_count INTEGER NOT NULL DEFAULT 0 +); +ALTER SEQUENCE change_tag_def_ctd_id_seq OWNED BY change_tag_def.ctd_id; + +CREATE UNIQUE INDEX ctd_name ON change_tag_def (ctd_name); +CREATE INDEX ctd_count ON change_tag_def (ctd_count); +CREATE INDEX ctd_user_defined ON change_tag_def (ctd_user_defined); \ No newline at end of file diff --git a/maintenance/postgres/tables.sql b/maintenance/postgres/tables.sql index 53026acff9..1a53359a99 100644 --- a/maintenance/postgres/tables.sql +++ b/maintenance/postgres/tables.sql @@ -354,6 +354,19 @@ CREATE TABLE categorylinks ( CREATE UNIQUE INDEX cl_from ON categorylinks (cl_from, cl_to); CREATE INDEX cl_sortkey ON categorylinks (cl_to, cl_sortkey, cl_from); +CREATE SEQUENCE change_tag_def_ctd_id_seq; +CREATE TABLE change_tag_def ( + ctd_id int NOT NULL PRIMARY KEY DEFAULT nextval('change_tag_def_ctd_id_seq'), + ctd_name TEXT NOT NULL, + ctd_user_defined SMALLINT NOT NULL DEFAULT 0, + ctd_count INTEGER NOT NULL DEFAULT 0 +); +ALTER SEQUENCE change_tag_def_ctd_id_seq OWNED BY change_tag_def.ctd_id; + +CREATE UNIQUE INDEX ctd_name ON change_tag_def (ctd_name); +CREATE INDEX ctd_count ON change_tag_def (ctd_count); +CREATE INDEX ctd_user_defined ON change_tag_def (ctd_user_defined); + CREATE SEQUENCE externallinks_el_id_seq; CREATE TABLE externallinks ( el_id INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('externallinks_el_id_seq'), diff --git a/maintenance/tables.sql b/maintenance/tables.sql index 8c9be05016..34c63ed72a 100644 --- a/maintenance/tables.sql +++ b/maintenance/tables.sql @@ -1968,4 +1968,20 @@ CREATE UNIQUE INDEX /*i*/site_ids_type ON /*_*/site_identifiers (si_type, si_key CREATE INDEX /*i*/site_ids_site ON /*_*/site_identifiers (si_site); CREATE INDEX /*i*/site_ids_key ON /*_*/site_identifiers (si_key); +-- Table defining tag names for IDs. Also stores hit counts to avoid expensive queries on change_tag +CREATE TABLE /*_*/change_tag_def ( + -- Numerical ID of the tag (ct_tag_id refers to this) + ctd_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT, + -- Symbolic name of the tag (what would previously be put in ct_tag) + ctd_name varbinary(255) NOT NULL, + -- Whether this tag was defined manually by a privileged user using Special:Tags + ctd_user_defined tinyint(1) NOT NULL, + -- Number of times this tag was used + ctd_count bigint unsigned NOT NULL default 0 +) /*$wgDBTableOptions*/; + +CREATE UNIQUE INDEX /*i*/ctd_name ON /*_*/change_tag_def (ctd_name); +CREATE INDEX /*i*/ctd_count ON /*_*/change_tag_def (ctd_count); +CREATE INDEX /*i*/ctd_user_defined ON /*_*/change_tag_def (ctd_user_defined); + -- vim: sw=2 sts=2 et diff --git a/package.json b/package.json index d6fd1b9e95..e9048ec0f1 100644 --- a/package.json +++ b/package.json @@ -25,12 +25,12 @@ "karma-firefox-launcher": "1.0.1", "karma-mocha-reporter": "2.2.5", "karma-qunit": "2.0.1", - "mwbot": "1.0.10", "postcss-less": "1.1.5", "qunit": "2.5.0", "stylelint": "9.2.0", "stylelint-config-wikimedia": "0.4.3", "wdio-junit-reporter": "0.2.0", + "wdio-mediawiki": "file:tests/selenium/wdio-mediawiki", "wdio-mocha-framework": "0.5.8", "wdio-sauce-service": "0.3.1", "wdio-spec-reporter": "0.0.5", diff --git a/resources/Resources.php b/resources/Resources.php index e8a5e24b92..4ecf89a6c7 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -112,13 +112,6 @@ return [ 'resources/src/mediawiki.skinning/interface.css' => [ 'media' => 'screen' ], ], ], - - 'jquery.tablesorter.styles' => [ - 'targets' => [ 'desktop', 'mobile' ], - 'styles' => [ - 'resources/src/jquery/jquery.tablesorter.styles.less', - ], - ], 'jquery.makeCollapsible.styles' => [ 'targets' => [ 'desktop', 'mobile' ], 'class' => ResourceLoaderLessVarFileModule::class, @@ -328,8 +321,8 @@ return [ 'scripts' => 'resources/src/jquery/jquery.tabIndex.js', ], 'jquery.tablesorter' => [ - 'scripts' => 'resources/src/jquery/jquery.tablesorter.js', - 'styles' => 'resources/src/jquery/jquery.tablesorter.less', + 'scripts' => 'resources/src/jquery.tablesorter/jquery.tablesorter.js', + 'styles' => 'resources/src/jquery.tablesorter/jquery.tablesorter.less', 'messages' => [ 'sort-descending', 'sort-ascending' ], 'dependencies' => [ 'jquery.tablesorter.styles', @@ -337,6 +330,12 @@ return [ 'mediawiki.language.months', ], ], + 'jquery.tablesorter.styles' => [ + 'targets' => [ 'desktop', 'mobile' ], + 'styles' => [ + 'resources/src/jquery/jquery.tablesorter.styles.less', + ], + ], 'jquery.textSelection' => [ 'scripts' => 'resources/src/jquery/jquery.textSelection.js', 'dependencies' => 'jquery.client', @@ -870,7 +869,7 @@ return [ 'targets' => [ 'desktop' ], ], 'mediawiki.template' => [ - 'scripts' => 'resources/src/mediawiki/mediawiki.template.js', + 'scripts' => 'resources/src/mediawiki.template.js', 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.template.mustache' => [ @@ -882,16 +881,16 @@ return [ 'dependencies' => 'mediawiki.template', ], 'mediawiki.template.regexp' => [ - 'scripts' => 'resources/src/mediawiki/mediawiki.template.regexp.js', + 'scripts' => 'resources/src/mediawiki.template.regexp.js', 'targets' => [ 'desktop', 'mobile' ], 'dependencies' => 'mediawiki.template', ], 'mediawiki.apipretty' => [ - 'styles' => 'resources/src/mediawiki/mediawiki.apipretty.css', + 'styles' => 'resources/src/mediawiki.apipretty.css', 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.api' => [ - 'scripts' => 'resources/src/mediawiki/api.js', + 'scripts' => 'resources/src/mediawiki.api.js', 'dependencies' => [ 'mediawiki.util', 'user.tokens', @@ -899,14 +898,14 @@ return [ 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.api.category' => [ - 'scripts' => 'resources/src/mediawiki/api/category.js', + 'scripts' => 'resources/src/mediawiki.api.category.js', 'dependencies' => [ 'mediawiki.api', 'mediawiki.Title', ], ], 'mediawiki.api.edit' => [ - 'scripts' => 'resources/src/mediawiki/api/edit.js', + 'scripts' => 'resources/src/mediawiki.api.edit.js', 'dependencies' => [ 'mediawiki.api', 'mediawiki.user', @@ -914,21 +913,21 @@ return [ 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.api.login' => [ - 'scripts' => 'resources/src/mediawiki/api/login.js', + 'scripts' => 'resources/src/mediawiki.api.login.js', 'dependencies' => 'mediawiki.api', ], 'mediawiki.api.options' => [ - 'scripts' => 'resources/src/mediawiki/api/options.js', + 'scripts' => 'resources/src/mediawiki.api.options.js', 'dependencies' => 'mediawiki.api', 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.api.parse' => [ - 'scripts' => 'resources/src/mediawiki/api/parse.js', + 'scripts' => 'resources/src/mediawiki.api.parse.js', 'dependencies' => 'mediawiki.api', 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.api.upload' => [ - 'scripts' => 'resources/src/mediawiki/api/upload.js', + 'scripts' => 'resources/src/mediawiki.api.upload.js', 'dependencies' => [ 'mediawiki.api', 'mediawiki.api.edit', @@ -936,27 +935,27 @@ return [ 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.api.user' => [ - 'scripts' => 'resources/src/mediawiki/api/user.js', + 'scripts' => 'resources/src/mediawiki.api.user.js', 'dependencies' => [ 'mediawiki.api', ], 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.api.watch' => [ - 'scripts' => 'resources/src/mediawiki/api/watch.js', + 'scripts' => 'resources/src/mediawiki.api.watch.js', 'dependencies' => [ 'mediawiki.api', ], ], 'mediawiki.api.messages' => [ - 'scripts' => 'resources/src/mediawiki/api/messages.js', + 'scripts' => 'resources/src/mediawiki.api.messages.js', 'dependencies' => [ 'mediawiki.api', ], 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.api.rollback' => [ - 'scripts' => 'resources/src/mediawiki/api/rollback.js', + 'scripts' => 'resources/src/mediawiki.api.rollback.js', 'dependencies' => [ 'mediawiki.api', ], @@ -1044,7 +1043,7 @@ return [ 'dependencies' => 'mediawiki.ForeignApi.core', ], 'mediawiki.ForeignApi.core' => [ - 'scripts' => 'resources/src/mediawiki/ForeignApi.js', + 'scripts' => 'resources/src/mediawiki.ForeignApi.core.js', 'dependencies' => [ 'mediawiki.api', 'oojs', @@ -1126,7 +1125,7 @@ return [ 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.inspect' => [ - 'scripts' => 'resources/src/mediawiki/mediawiki.inspect.js', + 'scripts' => 'resources/src/mediawiki.inspect.js', 'dependencies' => [ 'mediawiki.String', 'mediawiki.RegExp', @@ -1135,8 +1134,8 @@ return [ ], 'mediawiki.messagePoster' => [ 'scripts' => [ - 'resources/src/mediawiki.messagePoster/mediawiki.messagePoster.factory.js', - 'resources/src/mediawiki.messagePoster/mediawiki.messagePoster.MessagePoster.js', + 'resources/src/mediawiki.messagePoster/factory.js', + 'resources/src/mediawiki.messagePoster/MessagePoster.js', ], 'dependencies' => [ 'oojs', @@ -1147,7 +1146,7 @@ return [ ], 'mediawiki.messagePoster.wikitext' => [ 'scripts' => [ - 'resources/src/mediawiki.messagePoster/mediawiki.messagePoster.WikitextMessagePoster.js', + 'resources/src/mediawiki.messagePoster.wikitext/WikitextMessagePoster.js', ], 'dependencies' => [ 'mediawiki.api.edit', @@ -1157,14 +1156,14 @@ return [ ], 'mediawiki.notification' => [ 'styles' => [ - 'resources/src/mediawiki/mediawiki.notification.common.css', - 'resources/src/mediawiki/mediawiki.notification.print.css' + 'resources/src/mediawiki.notification/common.css', + 'resources/src/mediawiki.notification/print.css' => [ 'media' => 'print' ], ], 'skinStyles' => [ - 'default' => 'resources/src/mediawiki/mediawiki.notification.css', + 'default' => 'resources/src/mediawiki.notification/default.css', ], - 'scripts' => 'resources/src/mediawiki/mediawiki.notification.js', + 'scripts' => 'resources/src/mediawiki.notification/notification.js', 'dependencies' => [ 'mediawiki.util', 'mediawiki.visibleTimeout', @@ -1172,28 +1171,28 @@ return [ 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.notify' => [ - 'scripts' => 'resources/src/mediawiki/mediawiki.notify.js', + 'scripts' => 'resources/src/mediawiki.notify.js', 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.notification.convertmessagebox' => [ + 'scripts' => 'resources/src/mediawiki.notification.convertmessagebox.js', 'dependencies' => [ 'mediawiki.notification', ], - 'scripts' => 'resources/src/mediawiki/mediawiki.notification.convertmessagebox.js', 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.notification.convertmessagebox.styles' => [ 'styles' => [ - 'resources/src/mediawiki/mediawiki.notification.convertmessagebox.styles.less', + 'resources/src/mediawiki.notification.convertmessagebox.styles.less', ], 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.RegExp' => [ - 'scripts' => 'resources/src/mediawiki/mediawiki.RegExp.js', + 'scripts' => 'resources/src/mediawiki.RegExp.js', 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.String' => [ - 'scripts' => 'resources/src/mediawiki/mediawiki.String.js', + 'scripts' => 'resources/src/mediawiki.String.js', 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.pager.tablePager' => [ @@ -1214,7 +1213,7 @@ return [ ], ], 'mediawiki.storage' => [ - 'scripts' => 'resources/src/mediawiki/mediawiki.storage.js', + 'scripts' => 'resources/src/mediawiki.storage.js', 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.Title' => [ @@ -1229,13 +1228,13 @@ return [ 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.Upload' => [ - 'scripts' => 'resources/src/mediawiki/mediawiki.Upload.js', + 'scripts' => 'resources/src/mediawiki.Upload.js', 'dependencies' => [ 'mediawiki.api.upload', ], ], 'mediawiki.ForeignUpload' => [ - 'scripts' => 'resources/src/mediawiki/mediawiki.ForeignUpload.js', + 'scripts' => 'resources/src/mediawiki.ForeignUpload.js', 'dependencies' => [ 'mediawiki.ForeignApi', 'mediawiki.Upload', @@ -1251,7 +1250,7 @@ return [ 'class' => ResourceLoaderUploadDialogModule::class, ], 'mediawiki.ForeignStructuredUpload' => [ - 'scripts' => 'resources/src/mediawiki/mediawiki.ForeignStructuredUpload.js', + 'scripts' => 'resources/src/mediawiki.ForeignStructuredUpload.js', 'dependencies' => [ 'mediawiki.ForeignUpload', 'mediawiki.ForeignStructuredUpload.config', @@ -1262,7 +1261,7 @@ return [ ], 'mediawiki.Upload.Dialog' => [ 'scripts' => [ - 'resources/src/mediawiki/mediawiki.Upload.Dialog.js', + 'resources/src/mediawiki.Upload.Dialog.js', ], 'dependencies' => [ 'mediawiki.Upload.BookletLayout', @@ -1369,7 +1368,7 @@ return [ 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.user' => [ - 'scripts' => 'resources/src/mediawiki/mediawiki.user.js', + 'scripts' => 'resources/src/mediawiki.user.js', 'dependencies' => [ 'mediawiki.api', 'mediawiki.api.user', @@ -1380,7 +1379,7 @@ return [ 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.userSuggest' => [ - 'scripts' => 'resources/src/mediawiki/mediawiki.userSuggest.js', + 'scripts' => 'resources/src/mediawiki.userSuggest.js', 'dependencies' => [ 'jquery.suggestions', 'mediawiki.api' @@ -1388,7 +1387,7 @@ return [ ], 'mediawiki.util' => [ 'class' => ResourceLoaderMediaWikiUtilModule::class, - 'scripts' => 'resources/src/mediawiki/mediawiki.util.js', + 'scripts' => 'resources/src/mediawiki.util.js', 'dependencies' => [ 'jquery.accessKeyLabel', 'mediawiki.RegExp', @@ -1397,17 +1396,17 @@ return [ 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.viewport' => [ - 'scripts' => 'resources/src/mediawiki/mediawiki.viewport.js', + 'scripts' => 'resources/src/mediawiki.viewport.js', 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.checkboxtoggle' => [ - 'scripts' => 'resources/src/mediawiki/mediawiki.checkboxtoggle.js', + 'scripts' => 'resources/src/mediawiki.checkboxtoggle.js', ], 'mediawiki.checkboxtoggle.styles' => [ - 'styles' => 'resources/src/mediawiki/mediawiki.checkboxtoggle.css', + 'styles' => 'resources/src/mediawiki.checkboxtoggle.styles.css', ], 'mediawiki.cookie' => [ - 'scripts' => 'resources/src/mediawiki/mediawiki.cookie.js', + 'scripts' => 'resources/src/mediawiki.cookie.js', 'dependencies' => 'jquery.cookie', 'targets' => [ 'desktop', 'mobile' ], ], @@ -1418,7 +1417,7 @@ return [ 'dependencies' => 'jquery.textSelection', ], 'mediawiki.experiments' => [ - 'scripts' => 'resources/src/mediawiki/mediawiki.experiments.js', + 'scripts' => 'resources/src/mediawiki.experiments.js', 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.editfont.styles' => [ @@ -1426,7 +1425,7 @@ return [ 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.visibleTimeout' => [ - 'scripts' => 'resources/src/mediawiki/mediawiki.visibleTimeout.js', + 'scripts' => 'resources/src/mediawiki.visibleTimeout.js', 'targets' => [ 'desktop', 'mobile' ], ], @@ -1680,7 +1679,7 @@ return [ /* MediaWiki Page */ 'mediawiki.page.gallery' => [ - 'scripts' => 'resources/src/mediawiki/page/gallery.js', + 'scripts' => 'resources/src/mediawiki.page.gallery.js', 'dependencies' => [ 'mediawiki.page.gallery.styles', 'jquery.throttle-debounce', @@ -1694,7 +1693,7 @@ return [ 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.page.gallery.slideshow' => [ - 'scripts' => 'resources/src/mediawiki/page/gallery-slideshow.js', + 'scripts' => 'resources/src/mediawiki.page.gallery.slideshow.js', 'dependencies' => [ 'mediawiki.api', 'mediawiki.Title', @@ -1709,7 +1708,7 @@ return [ ] ], 'mediawiki.page.ready' => [ - 'scripts' => 'resources/src/mediawiki/page/ready.js', + 'scripts' => 'resources/src/mediawiki.page.ready.js', 'dependencies' => [ 'jquery.accessKeyLabel', 'jquery.checkboxShiftClick', @@ -1718,11 +1717,11 @@ return [ 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.page.startup' => [ - 'scripts' => 'resources/src/mediawiki/page/startup.js', + 'scripts' => 'resources/src/mediawiki.page.startup.js', 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.page.patrol.ajax' => [ - 'scripts' => 'resources/src/mediawiki/page/patrol.ajax.js', + 'scripts' => 'resources/src/mediawiki.page.patrol.ajax.js', 'dependencies' => [ 'mediawiki.api', 'mediawiki.util', @@ -1738,7 +1737,7 @@ return [ ], ], 'mediawiki.page.watch.ajax' => [ - 'scripts' => 'resources/src/mediawiki/page/watch.js', + 'scripts' => 'resources/src/mediawiki.page.watch.ajax.js', 'dependencies' => [ 'mediawiki.api.watch', 'mediawiki.notify', @@ -1763,7 +1762,7 @@ return [ ], ], 'mediawiki.page.rollback' => [ - 'scripts' => 'resources/src/mediawiki/page/rollback.js', + 'scripts' => 'resources/src/mediawiki.page.rollback.js', 'dependencies' => [ 'mediawiki.api.rollback', 'mediawiki.notify', @@ -1776,7 +1775,7 @@ return [ ], ], 'mediawiki.page.image.pagination' => [ - 'scripts' => 'resources/src/mediawiki/page/image-pagination.js', + 'scripts' => 'resources/src/mediawiki.page.image.pagination.js', 'dependencies' => [ 'mediawiki.util', 'jquery.spinner', @@ -2881,6 +2880,9 @@ return [ 'oojs-ui.styles.icons-alerts', 'oojs-ui.styles.icons-interactions', ], + 'messages' => [ + 'ooui-field-help' + ], 'targets' => [ 'desktop', 'mobile' ], ], // This contains only the styles required by core widgets. diff --git a/resources/lib/oojs-ui/History.md b/resources/lib/oojs-ui/History.md index c95075c6e8..144fea7370 100644 --- a/resources/lib/oojs-ui/History.md +++ b/resources/lib/oojs-ui/History.md @@ -1,4 +1,39 @@ # OOUI Release History +## v0.27.0 / 2018-05-08 +### Breaking changes +* [BREAKING CHANGE] GroupElement: Remove getItem(s)FromData (Prateek Saxena) +* [BREAKING CHANGE] MultiSelectWidget: Remove getSelectedItems and getSelectedItemsData (Prateek Saxena) +* [BREAKING CHANGE] SelectWidget: Remove getSelectedItem (Prateek Saxena) +* [BREAKING CHANGE] TagItemWidget: Replace 'disabled' items with 'fixed' (Moriel Schottlender) +* [BREAKING CHANGE] indicators: Remove 'alert', deprecated in v0.25.2 (James D. Forrester) + +### Deprecations +* [DEPRECATING CHANGE] icons: Deprecate 'editing-citation' icons from 'content' (Volker E.) +* [DEPRECATING CHANGE] icons: Rename 'settings' to 'pageSettings' (Volker E.) + +### Features +* Add an infusable PHP implementation of the NumberInputWidget (mainframe98) + +### Styles +* TextInputWidget: Hide IE10+'s clear button when it conflicts with labels (Thiemo Kreuz) +* WikimediaUI theme: Don't add icon `padding` to menu tools with no icons (Ed Sanders) +* WikimediaUI theme: Fix TagItem's label and close position (Volker E.) +* WikimediaUI theme: Fix visual regression on toolbar menu border (Volker E.) +* Apex theme: Fix position of help icon in FieldLayout align=top (Ed Sanders) +* icons: Add 'editing-citation' pack (Volker E.) +* icons: Add `title` elements to new icons in 'editing-citation' pack (Volker E.) + +### Code +* FieldLayout: Provide label to 'help' PopupButtonWidget in JS (Volker E.) +* MenuTagMultiselect: Use default onTagSelect if allowArbitrary (Daimona Eaytoy) +* NumberInputWidget: Add `aria-hidden` to buttons (Volker E.) +* ProcessDialog: Fix footer height when actions or dialog size changes (Bartosz Dziewoński) +* SelectFileWidget: Use `