Aude has uploaded a new change for review. https://gerrit.wikimedia.org/r/162861
Change subject: New Wikidata Build - 25/09/2014 ...................................................................... New Wikidata Build - 25/09/2014 Change-Id: Iace825d93dcf461d54151d3c689c0cd8ed0fe145 --- M Gruntfile.js M README.md M WikibaseClient.settings.php M WikibaseRepo.settings.php A build/tasks/updatecomposer.js M composer.lock M extensions/Wikibase/lib/i18n/qqq.json M extensions/Wikibase/lib/resources/Resources.php M extensions/Wikibase/lib/resources/jquery.wikibase/jquery.wikibase.claimview.js M extensions/Wikibase/lib/resources/wikibase.RepoApi/resources.php M extensions/Wikibase/lib/resources/wikibase.RepoApi/wikibase.AbstractedRepoApi.js D extensions/Wikibase/lib/resources/wikibase.compileEntityStoreFromMwConfig.js M extensions/Wikibase/lib/resources/wikibase.store/resources.php A extensions/Wikibase/lib/resources/wikibase.store/store.ApiEntityStore.js A extensions/Wikibase/lib/resources/wikibase.store/store.CombiningEntityStore.js M extensions/Wikibase/lib/resources/wikibase.store/store.EntityStore.js M extensions/Wikibase/lib/resources/wikibase.store/store.FetchedContentUnserializer.js A extensions/Wikibase/lib/resources/wikibase.store/store.MwConfigEntityStore.js M extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.claimview.tests.js M extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.referenceview.tests.js M extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinkgroupview.tests.js M extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinklistview.tests.js M extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinkview.tests.js M extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.snaklistview.tests.js M extensions/Wikibase/lib/tests/qunit/jquery.wikibase/resources.php M extensions/Wikibase/lib/tests/qunit/resources.php M extensions/Wikibase/lib/tests/qunit/wikibase.RepoApi/wikibase.RepoApi.tests.js D extensions/Wikibase/lib/tests/qunit/wikibase.compileEntityStoreFromMwConfig.tests.js R extensions/Wikibase/lib/tests/qunit/wikibase.store/store.CombiningEntityStore.tests.js A extensions/Wikibase/lib/tests/qunit/wikibase.store/store.MwConfigEntityStore.tests.js M extensions/Wikibase/repo/i18n/de.json M extensions/Wikibase/repo/i18n/et.json M extensions/Wikibase/repo/i18n/fa.json M extensions/Wikibase/repo/i18n/fr.json M extensions/Wikibase/repo/i18n/mk.json M extensions/Wikibase/repo/i18n/pt.json M extensions/Wikibase/repo/i18n/qqq.json M extensions/Wikibase/repo/i18n/zh-hans.json M extensions/Wikibase/repo/includes/ClaimSummaryBuilder.php R extensions/Wikibase/repo/includes/Diff/ClaimDiffer.php R extensions/Wikibase/repo/includes/Diff/ClaimDifference.php R extensions/Wikibase/repo/includes/Diff/ClaimDifferenceVisualizer.php R extensions/Wikibase/repo/includes/Diff/DiffOpValueFormatter.php R extensions/Wikibase/repo/includes/Diff/DiffView.php R extensions/Wikibase/repo/includes/Diff/EntityContentDiffView.php R extensions/Wikibase/repo/includes/Diff/EntityDiffVisualizer.php M extensions/Wikibase/repo/includes/actions/EditEntityAction.php M extensions/Wikibase/repo/includes/api/SetClaim.php M extensions/Wikibase/repo/includes/content/EntityHandler.php M extensions/Wikibase/repo/resources/Resources.php M extensions/Wikibase/repo/resources/wikibase.ui.entityViewInit.js M extensions/Wikibase/repo/tests/phpunit/includes/ClaimSummaryBuilderTest.php R extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferTest.php R extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferenceTest.php R extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferenceVisualizerTest.php R extensions/Wikibase/repo/tests/phpunit/includes/Diff/DiffOpValueFormatterTest.php R extensions/Wikibase/repo/tests/phpunit/includes/Diff/DiffViewTest.php R extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityContentDiffViewTest.php R extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityDiffVisualizerTest.php M vendor/autoload.php M vendor/composer/autoload_classmap.php M vendor/composer/autoload_real.php M vendor/composer/installed.json 63 files changed, 556 insertions(+), 422 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikidata refs/changes/61/162861/1 diff --git a/Gruntfile.js b/Gruntfile.js index 241633a..d3fd93e 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -18,13 +18,21 @@ install: { cmd: 'composer install --ansi --prefer-dist -o' } + }, + updatecomposer: { + main: { + src: 'composer.json', + branchName: grunt.option( "branchName" ) + } } } ); grunt.loadNpmTasks( 'grunt-exec' ); grunt.loadNpmTasks( 'grunt-contrib-clean' ); + grunt.loadTasks( 'build/tasks' ); grunt.registerTask( 'uninstall', [ 'clean:build' ] ); grunt.registerTask( 'install', [ 'clean:build', 'exec:install' ] ); + grunt.registerTask( 'branch', [ 'uninstall', 'updatecomposer', 'exec:install' ] ); }; diff --git a/README.md b/README.md index 97432a7..5e22e88 100644 --- a/README.md +++ b/README.md @@ -56,10 +56,32 @@ Manually updating a Wikidata build requires [composer](http://getcomposer.org/) to be installed on the system. -In the root Wikidata "extension" directory, run: +The Wikidata build uses grunt (node.js) to provide some convenience functions. To use this, do: ```bash -composer update -o + +npm install +``` + +Then to make a build, run: + +```bash + +grunt install +``` + +To clean the install (remove composer.lock, /vendor and /extensions): + +```bash + +grunt uninstall +``` + +To make a deployment build, using appropriate branchName argument: + +```bash + +grunt branch --branchName="wmf/1.25wmf1" ``` ## Updating this README diff --git a/WikibaseClient.settings.php b/WikibaseClient.settings.php index 8430e64..4135d2c 100644 --- a/WikibaseClient.settings.php +++ b/WikibaseClient.settings.php @@ -1,2 +1,2 @@ <?php -$wgWBClientSettings["sharedCacheKeyPrefix"] = "wikibase:WBL/1411556172"; \ No newline at end of file +$wgWBClientSettings["sharedCacheKeyPrefix"] = "wikibase:WBL/1411639580"; \ No newline at end of file diff --git a/WikibaseRepo.settings.php b/WikibaseRepo.settings.php index bcec97f..6e52703 100644 --- a/WikibaseRepo.settings.php +++ b/WikibaseRepo.settings.php @@ -1,2 +1,2 @@ <?php -$wgWBRepoSettings["sharedCacheKeyPrefix"] = "wikibase:WBL/1411556172"; \ No newline at end of file +$wgWBRepoSettings["sharedCacheKeyPrefix"] = "wikibase:WBL/1411639580"; \ No newline at end of file diff --git a/build/tasks/updatecomposer.js b/build/tasks/updatecomposer.js new file mode 100644 index 0000000..4d8bb2b --- /dev/null +++ b/build/tasks/updatecomposer.js @@ -0,0 +1,28 @@ +'use strict'; + +var path = require( 'path' ); + +module.exports = function ( grunt ) { + + function autoloadSuffix( branch ) { + var suffix = "wikidata_" + branch.substring( branch.lastIndexOf( "/" ) + 1 ); + suffix = suffix.replace( '\.', '_' ); + + return suffix; + } + + grunt.registerMultiTask( 'updatecomposer', 'Make a deployment branch', function () { + var composerPath = path.join( __dirname, '../..', 'composer.json' ), + composer = grunt.file.readJSON( composerPath ), + branch = this.data.branchName; + + composer.require["wikibase/wikibase"] = 'dev-' + branch; + + delete composer.config["github-oauth"]; + composer.config["autoloader-suffix"] = autoloadSuffix( branch ); + + grunt.file.write( composerPath, JSON.stringify( composer, null, ' ' ) ); + grunt.log.ok( 'Updated composer file' ); + } ); + +} diff --git a/composer.lock b/composer.lock index 946d58d..5174cf5 100644 --- a/composer.lock +++ b/composer.lock @@ -1191,12 +1191,12 @@ "source": { "type": "git", "url": "https://github.com/wikimedia/mediawiki-extensions-Wikibase.git", - "reference": "47597574720e4381dbf976ee01894e6b2ce44b8d" + "reference": "8d0aa67f8d26b392592c71b15bd3ff38edb00215" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/47597574720e4381dbf976ee01894e6b2ce44b8d", - "reference": "47597574720e4381dbf976ee01894e6b2ce44b8d", + "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/8d0aa67f8d26b392592c71b15bd3ff38edb00215", + "reference": "8d0aa67f8d26b392592c71b15bd3ff38edb00215", "shasum": "" }, "require": { @@ -1265,7 +1265,7 @@ "wikibaserepo", "wikidata" ], - "time": "2014-09-24 09:01:52" + "time": "2014-09-24 20:21:31" }, { "name": "wikibase/wikimedia-badges", diff --git a/extensions/Wikibase/lib/i18n/qqq.json b/extensions/Wikibase/lib/i18n/qqq.json index 426d68f..d81e859 100644 --- a/extensions/Wikibase/lib/i18n/qqq.json +++ b/extensions/Wikibase/lib/i18n/qqq.json @@ -79,7 +79,7 @@ "wikibase-undeserializable-value": "Message to display for any data values that are invalid and cannot be deserialized. The message is displayed in such places as when users view a diff.", "wikibase-validator-invalid": "Generic input validation error shown when the input is invalid but no further information is provided by the validator.\n{{Related|Wikibase-validator}}", "wikibase-validator-missing-field": "Input validation error shown when a field is missing from the input.\n\nParameters:\n* $1 - the required field\n{{Related|Wikibase-validator}}", - "wikibase-validator-bad-type": "Input validation error shown when the input has the wrong type.\n\nParameters:\n* $1 - the expected type\n* $2 - the actual type\n{{Related|Wikibase-validator}}", + "wikibase-validator-bad-type": "Input validation error shown when the input has the wrong type.\n\nParameters:\n* $1 - the expected type\n* $2 - the actual type\n{{Related|Wikibase-validator}}\n{{Identical|Instead of}}", "wikibase-validator-too-long": "Input validation error shown when the input is too long. Parameters:\n* $1 - the maximum length\n* $2 - (Unused) the actual length\n{{Related|Wikibase-validator}}", "wikibase-validator-too-short": "Input validation error shown when the input is too short. Parameters:\n* $1 - the minimum length\n* $2 - (Unused) the actual length\n{{Related|Wikibase-validator}}", "wikibase-validator-too-high": "Input validation error shown when the input is too high. Parameters:\n* $1 - the maximum value\n* $2 - (Unused) the actual length\n{{Related|Wikibase-validator}}", diff --git a/extensions/Wikibase/lib/resources/Resources.php b/extensions/Wikibase/lib/resources/Resources.php index 1b867a6..2eca041 100644 --- a/extensions/Wikibase/lib/resources/Resources.php +++ b/extensions/Wikibase/lib/resources/Resources.php @@ -67,21 +67,6 @@ 'scripts' => 'templates.js', ), - 'wikibase.compileEntityStoreFromMwConfig' => $moduleTemplate + array( - 'scripts' => array( - 'wikibase.compileEntityStoreFromMwConfig.js', - ), - 'dependencies' => array( - 'json', - 'wikibase', - 'wikibase.serialization', - 'wikibase.serialization.entities', - 'wikibase.store.FetchedContent', - 'wikibase.store.FetchedContentUnserializer', - 'wikibase.datamodel', - ), - ), - 'wikibase' => $moduleTemplate + array( 'scripts' => array( 'wikibase.js', diff --git a/extensions/Wikibase/lib/resources/jquery.wikibase/jquery.wikibase.claimview.js b/extensions/Wikibase/lib/resources/jquery.wikibase/jquery.wikibase.claimview.js index 307b14a..f16f25d 100644 --- a/extensions/Wikibase/lib/resources/jquery.wikibase/jquery.wikibase.claimview.js +++ b/extensions/Wikibase/lib/resources/jquery.wikibase/jquery.wikibase.claimview.js @@ -156,12 +156,6 @@ var self = this; this._claim = this.option( 'value' ); - var entityStore = this.option( 'entityStore' ); - - if( !( entityStore instanceof wb.store.EntityStore ) ) { - throw new Error( 'Entity store needs to be set' ); - } - // call template creation, this will require this._claim in template params callback! PARENT.prototype._create.call( this ); @@ -178,7 +172,7 @@ value: this.mainSnak() || {}, locked: this.option( 'locked' ).mainSnak, autoStartEditing: false, // manually, after toolbar is there, so events can access toolbar - entityStore: entityStore, + entityStore: this.options.entityStore, valueViewBuilder: this.option( 'valueViewBuilder' ) } ); @@ -203,7 +197,7 @@ var oldHelpMessage = this.options.helpMessage; this.options.helpMessage = deferred.promise(); - entityStore.get( property ).done( function( fetchedProperty ) { + this.options.entityStore.get( property ).done( function( fetchedProperty ) { var helpMessage; if( fetchedProperty ) { helpMessage = mw.msg( diff --git a/extensions/Wikibase/lib/resources/wikibase.RepoApi/resources.php b/extensions/Wikibase/lib/resources/wikibase.RepoApi/resources.php index 4c03897..adc3e24 100644 --- a/extensions/Wikibase/lib/resources/wikibase.RepoApi/resources.php +++ b/extensions/Wikibase/lib/resources/wikibase.RepoApi/resources.php @@ -24,7 +24,6 @@ 'util.inherit', 'wikibase.datamodel', 'wikibase.RepoApi', - 'wikibase.serialization.entities', ), ), diff --git a/extensions/Wikibase/lib/resources/wikibase.RepoApi/wikibase.AbstractedRepoApi.js b/extensions/Wikibase/lib/resources/wikibase.RepoApi/wikibase.AbstractedRepoApi.js index b9d6f6f..bd0635f 100644 --- a/extensions/Wikibase/lib/resources/wikibase.RepoApi/wikibase.AbstractedRepoApi.js +++ b/extensions/Wikibase/lib/resources/wikibase.RepoApi/wikibase.AbstractedRepoApi.js @@ -46,48 +46,6 @@ }, /** - * Gets one or more Entities. - * - * @param {String[]|String} ids - * @param {String[]|String} [props] Key(s) of property/ies to retrieve from the API - * default: null (will return all properties) - * @param {String[]} [languages] - * default: null (will return results in all languages) - * @param {String[]|String} [sort] Key(s) of property/ies to sort on - * default: null (unsorted) - * @param {String} [dir] Sort direction may be 'ascending' or 'descending' - * default: null (ascending) - * @return {jQuery.Promise} If successful, the first parameter of the done callbacks will be - * an object with keys of the entity's IDs and values of the requested entities - * represented as wb.datamodel.Entity objects. If a requested Entity does not exist, it will not - * be represented in the result. - * - * @todo Requires more? tests! - */ - getEntities: function( ids, props, languages, sort, dir ) { - return this._abstract( - PARENT.prototype.getEntities.apply( this, arguments ), - function( result ) { - var entities = {}, - unserializer = ( new wb.serialization.SerializerFactory() ).newUnserializerFor( - wb.datamodel.Entity - ); - - $.each( result.entities, function( id, entityData ) { - if( entityData.missing === '' ) { - return; // missing entity - } - - var entity = unserializer.unserialize( entityData ); - entities[ entity.getId() ] = entity; - } ); - - return [ entities ]; - } - ); - }, - - /** * Creates/Updates an entire claim. * * @param {wb.datamodel.Claim|wb.datamodel.Statement} claim diff --git a/extensions/Wikibase/lib/resources/wikibase.compileEntityStoreFromMwConfig.js b/extensions/Wikibase/lib/resources/wikibase.compileEntityStoreFromMwConfig.js deleted file mode 100644 index a44026e..0000000 --- a/extensions/Wikibase/lib/resources/wikibase.compileEntityStoreFromMwConfig.js +++ /dev/null @@ -1,88 +0,0 @@ -/** - * @licence GNU GPL v2+ - * @author Daniel Werner < daniel.a.r.wer...@gmail.com > - * @author Adrian Lang < adrian.l...@wikimedia.de > - */ -wikibase.compileEntityStoreFromMwConfig = ( function( $, wb, mw ) { - 'use strict'; - - /** - * Fetched entity unserializer's unserialize function. - * @type {Function} - */ - var unserialize; - - /** - * Compiles an EntityStore object from MediaWiki's "wbUsedEntities" config variable. - * @since 0.5 - * - * @param {wikibase.store.EntityStore} entityStore The EntityStore to compile. - */ - function compileEntityStoreFromMwConfig( entityStore ) { - var serializedFetchedEntities, - fetchedEntities; - - serializedFetchedEntities = getSerializedFetchedEntitiesFromConfig( 'wbUsedEntities' ); - - if( !$.isEmptyObject( serializedFetchedEntities ) ) { - fetchedEntities = mapObj( serializedFetchedEntities, getUnserialize() ); - entityStore.compile( fetchedEntities ); - } - } - - /** - * Helper for getting the serialized fetched entities in object form out of mw.config. - * - * @param {string} varName mw.config var name - * @return {Object} - * - * @throws {Error} In case the given config variable name does not exist. - */ - function getSerializedFetchedEntitiesFromConfig( varName ) { - if( !mw.config.exists( varName ) ) { - throw new Error( 'Can not load data for wikibase.compileEntityStoreFromMwConfig. ' - + 'mw.config variable "' + varName + '" is not set.' ); - } - return JSON.parse( mw.config.get( varName ) ); - } - - /** - * Applies a function to all values of an object. - * - * @param {Object} obj - * @param {Function} mapper - * @return {Object} - * - * @todo Move to utils? - */ - function mapObj( obj, mapper ) { - var res = {}; - $.each( obj, function( k, v ) { res[k] = mapper( v ); } ); - return res; - } - - /** - * Returns the "unserialize" function of the fetched entity unserializer. - * - * @return {Function} - */ - function getUnserialize() { - if( !unserialize ) { - var factory = new wb.serialization.SerializerFactory(), - entityUnserializer = factory.newUnserializerFor( wb.datamodel.Entity ); - - // Unserializer for fetched content whose content is a wb.datamodel.Entity: - var fetchedEntityUnserializer = factory.newUnserializerFor( - wb.store.FetchedContent, { - contentUnserializer: entityUnserializer - } - ); - - unserialize = $.proxy( fetchedEntityUnserializer, 'unserialize' ); - } - return unserialize; - } - - return compileEntityStoreFromMwConfig; - -}( jQuery, wikibase, mediaWiki ) ); diff --git a/extensions/Wikibase/lib/resources/wikibase.store/resources.php b/extensions/Wikibase/lib/resources/wikibase.store/resources.php index 2db4a4a..4acc39e 100644 --- a/extensions/Wikibase/lib/resources/wikibase.store/resources.php +++ b/extensions/Wikibase/lib/resources/wikibase.store/resources.php @@ -16,14 +16,34 @@ $modules = array( + 'wikibase.store.ApiEntityStore' => $moduleTemplate + array( + 'scripts' => array( + 'store.ApiEntityStore.js', + ), + 'dependencies' => array( + 'wikibase.store', + 'wikibase.store.EntityStore', + ), + ), + + 'wikibase.store.CombiningEntityStore' => $moduleTemplate + array( + 'scripts' => array( + 'store.CombiningEntityStore.js', + ), + 'dependencies' => array( + 'util.inherit', + 'wikibase.store', + 'wikibase.store.EntityStore', + ), + ), + 'wikibase.store.EntityStore' => $moduleTemplate + array( 'scripts' => array( 'store.EntityStore.js', ), 'dependencies' => array( - 'mediawiki.Title', + 'util.inherit', 'wikibase.store', - 'wikibase.store.FetchedContent', ), ), @@ -32,8 +52,8 @@ 'store.FetchedContent.js', ), 'dependencies' => array( - 'wikibase.store', 'mediawiki.Title', + 'wikibase.store', ), ), @@ -42,6 +62,7 @@ 'store.FetchedContentUnserializer.js', ), 'dependencies' => array( + 'mediawiki.Title', 'util.inherit', 'wikibase.serialization', // For registering in the SerializerFactory 'wikibase.store', @@ -58,6 +79,18 @@ ), ), + 'wikibase.store.MwConfigEntityStore' => $moduleTemplate + array( + 'scripts' => array( + 'store.MwConfigEntityStore.js', + ), + 'dependencies' => array( + 'json', + 'wikibase.store', + 'wikibase.store.EntityStore', + 'wikibase.store.FetchedContent', + ), + ), + ); return $modules; diff --git a/extensions/Wikibase/lib/resources/wikibase.store/store.ApiEntityStore.js b/extensions/Wikibase/lib/resources/wikibase.store/store.ApiEntityStore.js new file mode 100644 index 0000000..11d87c3 --- /dev/null +++ b/extensions/Wikibase/lib/resources/wikibase.store/store.ApiEntityStore.js @@ -0,0 +1,86 @@ +/** + * @licence GNU GPL v2+ + * @author Adrian Lang < adrian.l...@wikimedia.de > + */ +( function( wb, $ ) { + 'use strict'; + + var MODULE = wb.store; + + /** + * Entity store fetching entities from API. + * @constructor + * @extends wikibase.store.EntityStore + * @since 0.5 + * + * @param {wikibase.RepoApi} repoApi + * @param {wikibase.store.FetchedContentUnserializer} fetchedEntityUnserializer; + * @param {string[]} languages + */ + var SELF = MODULE.ApiEntityStore = util.inherit( + 'WbApiEntityStore', + MODULE.EntityStore, + function( repoApi, fetchedEntityUnserializer, languages ) { + this._entities = {}; + this._fetchedEntityUnserializer = fetchedEntityUnserializer; + this._languages = languages; + this._repoApi = repoApi; + } + ); + + $.extend( SELF.prototype, { + /** + * @type {Object} + */ + _entities: null, + + /** + * @type {wikibase.store.FetchedContentUnserializer} + */ + _fetchedEntityUnserializer: null, + + /** + * @type {string[]} + */ + _languages: null, + + /** + * @type {wikibase.RepoApi} + */ + _repoApi: null, + + /** + * @see wikibase.store.Entity.store.get + */ + get: function( entityId ) { + var deferred = $.Deferred(); + var self = this; + + if( this._entities.hasOwnProperty( entityId ) ) { + deferred.resolve( this._entities[ entityId ] ); + } else { + this._repoApi.getEntities( entityId, null, this._languages ) + .done( function( result ) { + $.each( result.entities, function( id, entityData ) { + if( entityData.missing === '' ) { + return; // missing entity + } + + var entity = self._fetchedEntityUnserializer.unserialize( { + title: entityData.title, + content: entityData + } ); + self._entities[ entity.getContent().getId() ] = entity; + } ); + + deferred.resolve( self._entities[ entityId ] ); + } ) + // FIXME: Evaluate failing promise + .fail( deferred.reject ); + } + + return deferred.promise(); + } + } ); +}( wikibase, jQuery ) ); + diff --git a/extensions/Wikibase/lib/resources/wikibase.store/store.CombiningEntityStore.js b/extensions/Wikibase/lib/resources/wikibase.store/store.CombiningEntityStore.js new file mode 100644 index 0000000..2147b08 --- /dev/null +++ b/extensions/Wikibase/lib/resources/wikibase.store/store.CombiningEntityStore.js @@ -0,0 +1,68 @@ +/** + * @licence GNU GPL v2+ + * @author Adrian Lang < adrian.l...@wikimedia.de > + */ +( function( wb, $ ) { + 'use strict'; + + var MODULE = wb.store; + + /** + * Sequentially tries a handler on an array until a call succeeds. + * + * @param {*[]} arr + * @param {Function} elemHandler A function taking the values from arr one by one and returning + * a jQuery.Promise. + * @return {jQuery.Promise} + */ + function asyncFirst( arr, elemHandler ) { + var deferred = $.Deferred(); + var idx = 0; + function tryNext() { + if( arr.length <= idx ) { + deferred.reject(); + return; + } + elemHandler( arr[ idx++ ] ).done( deferred.resolve ).fail( tryNext ); + } + + window.setTimeout( tryNext, 0 ); + + return deferred.promise(); + } + + /** + * Entity store wrapping multiple EntityStore instances. + * @constructor + * @extends wikibase.store.EntityStore + * @since 0.5 + * + * @param {Object[]} stores + */ + MODULE.CombiningEntityStore = util.inherit( + 'WbCombiningEntityStore', + wb.store.EntityStore, + function( stores ) { + this._stores = stores; + }, + { + /** + * @type {Object[]} + */ + _stores: null, + + /** + * @see wikibase.store.Entity.store.get + */ + get: function( entityId ) { + if( !entityId ) { + // FIXME: This should probably be fixed on the caller's side + return $.Deferred().resolve( null ); + } else { + return asyncFirst( this._stores, function( getter ) { + return getter.get( entityId ); + } ); + } + } + } ); +}( wikibase, jQuery ) ); diff --git a/extensions/Wikibase/lib/resources/wikibase.store/store.EntityStore.js b/extensions/Wikibase/lib/resources/wikibase.store/store.EntityStore.js index aa1694e..5706fed 100644 --- a/extensions/Wikibase/lib/resources/wikibase.store/store.EntityStore.js +++ b/extensions/Wikibase/lib/resources/wikibase.store/store.EntityStore.js @@ -2,85 +2,30 @@ * @licence GNU GPL v2+ * @author Adrian Lang < adrian.l...@wikimedia.de > */ -( function( wb, $, mw ) { +( function( wb, $ ) { 'use strict'; var MODULE = wb.store; /** - * Entity store managing wb.datamodel.Entity objects. + * Entity store managing wikibase.datamodel.Entity objects. * @constructor * @since 0.5 - * - * @param {wb.AbstractedRepoApi} abstractedRepoApi */ - var SELF = MODULE.EntityStore = function WbEntityStore( abstractedRepoApi ) { - this._repoApi = abstractedRepoApi; - this._entities = {}; - }; + var SELF = MODULE.EntityStore = function WbEntityStore() {}; $.extend( SELF.prototype, { /** - * Object containing wikibase.store.FetchedContent objects indexed by entity id. - * @type {Object} - */ - _entities: null, - - /** - * @type {wb.AbstractedRepoApi} - */ - _repoApi: null, - - /** - * Returns a promise resolving to the entity, undefined or null + * Returns a promise resolving to the entity, undefined or null. * @since 0.5 * * @param {string} entityId - * - * @return {jQuery.Promise} Resolved parameters: - * - {wikibase.store.FetchedContent|undefined|null} + * @return {jQuery.Promise} + * Resolved parameters: + * - {wikibase.store.FetchedContent|undefined|null} + * No rejected parameters. */ - get: function( entityId ) { - var store = this, - deferred = new $.Deferred(); - - if( !entityId ) { - // FIXME: This should probably be fixed on the caller's side - deferred.resolve( null ); - } else if( this._entities.hasOwnProperty( entityId ) ) { - // Caller should not assume synchronous behaviour: - window.setTimeout( function() { - deferred.resolve( store._entities[entityId] ); - }, 0 ); - } else { - var language = mw.config.get( 'wgUserLanguage' ); - - store._repoApi.getEntities( entityId, null, [language] ).done( function( entities ) { - var entity = entities[entityId]; - - if( entity ) { - store._entities[entityId] = new wb.store.FetchedContent( { - // FIXME: Accessing _data is not ok - title: new mw.Title( entity._data.title ), - content: entity - } ); - } - - deferred.resolve( store._entities[entityId] ); - } ); - } - - return deferred.promise(); - }, - - /** - * Adds a batch of entities to the store. - * @since 0.5 - * - * @param {Object} indexedEntities - */ - compile: function( indexedEntities ) { - $.extend( this._entities, indexedEntities ); - } + get: util.abstractMember } ); -}( wikibase, jQuery, mediaWiki ) ); + +}( wikibase, jQuery ) ); diff --git a/extensions/Wikibase/lib/resources/wikibase.store/store.FetchedContentUnserializer.js b/extensions/Wikibase/lib/resources/wikibase.store/store.FetchedContentUnserializer.js index 6c93906..ada8061 100644 --- a/extensions/Wikibase/lib/resources/wikibase.store/store.FetchedContentUnserializer.js +++ b/extensions/Wikibase/lib/resources/wikibase.store/store.FetchedContentUnserializer.js @@ -24,7 +24,7 @@ /** * @see wb.serialization.Unserializer.unserialize * - * @return wb.datamodel.Entity + * @return {wikibase.store.FetchedContent} */ unserialize: function( serialization ) { var title = new mw.Title( serialization.title ), diff --git a/extensions/Wikibase/lib/resources/wikibase.store/store.MwConfigEntityStore.js b/extensions/Wikibase/lib/resources/wikibase.store/store.MwConfigEntityStore.js new file mode 100644 index 0000000..c87a87e --- /dev/null +++ b/extensions/Wikibase/lib/resources/wikibase.store/store.MwConfigEntityStore.js @@ -0,0 +1,74 @@ +/** + * @licence GNU GPL v2+ + * @author Daniel Werner < daniel.a.r.wer...@gmail.com > + * @author Adrian Lang < adrian.l...@wikimedia.de > + */ +( function( wb, $, mw ) { + 'use strict'; + + var MODULE = wb.store; + + /** + * Entity store fetching Entity objects from mediaWiki config. + * @constructor + * @extends wikibase.store.EntityStore + * @since 0.5 + * + * @param {wikibase.store.FetchedContentUnserializer} fetchedEntityUnserializer + */ + MODULE.MwConfigEntityStore = util.inherit( + 'WbMwConfigEntityStore', + MODULE.EntityStore, + function( fetchedEntityUnserializer ) { + this._fetchedEntityUnserializer = fetchedEntityUnserializer; + this._fetchedEntities = getSerializedFetchedEntitiesFromConfig( 'wbUsedEntities' ); + }, + { + /** + * @type {wikibase.store.FetchedContentUnserializer} + */ + _fetchedEntityUnserializer: null, + + /** + * @type {Object} + */ + _fetchedEntities: null, + + /** + * @see wikibase.store.EntityStore.get + */ + get: function( entityId ) { + var deferred = $.Deferred(); + + if( !this._fetchedEntities.hasOwnProperty( entityId ) ) { + deferred.reject(); + } else { + if( !( this._fetchedEntities[entityId] instanceof wb.store.FetchedContent ) ) { + this._fetchedEntities[entityId] = this._fetchedEntityUnserializer.unserialize( + this._fetchedEntities[entityId] + ); + } + deferred.resolve( this._fetchedEntities[entityId] ); + } + + return deferred.promise(); + } + } ); + + /** + * Helper for getting the serialized fetched entities in object form out of mw.config. + * + * @param {string} varName mw.config var name + * @return {Object} + * + * @throws {Error} In case the given config variable name does not exist. + */ + function getSerializedFetchedEntitiesFromConfig( varName ) { + if( !mw.config.exists( varName ) ) { + throw new Error( 'Can not load data for wikibase.store.MwConfigEntityStore. ' + + 'mw.config variable "' + varName + '" is not set.' ); + } + return JSON.parse( mw.config.get( varName ) ); + } + +}( wikibase, jQuery, mediaWiki ) ); diff --git a/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.claimview.tests.js b/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.claimview.tests.js index 7f9bb3d..e64246e 100644 --- a/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.claimview.tests.js +++ b/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.claimview.tests.js @@ -5,18 +5,19 @@ ( function( $, mw, wb, dv, vf, vv, QUnit ) { 'use strict'; - var entityStore = new wb.store.EntityStore( null ); - entityStore.compile( { - p1: new wb.store.FetchedContent( { - title: new mw.Title( 'Property:P1' ), - content: new wb.datamodel.Property( { - id: 'P1', - type: 'property', - datatype: 'string', - label: { en: 'P1' } - } ) - } ) - } ); + var entityStore = { + get: function() { + return $.Deferred().resolve( new wb.store.FetchedContent( { + title: new mw.Title( 'Property:P1' ), + content: new wb.datamodel.Property( { + id: 'P1', + type: 'property', + datatype: 'string', + label: { en: 'P1' } + } ) + } ) ); + } + }; var valueViewBuilder = new wb.ValueViewBuilder( new vv.ExpertStore(), diff --git a/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.referenceview.tests.js b/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.referenceview.tests.js index 727d8b4..6c8ed81 100644 --- a/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.referenceview.tests.js +++ b/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.referenceview.tests.js @@ -7,18 +7,19 @@ // We need an entity store for the instances of jquery.wikibase.referenceview // and jquery.wikibase.snakview created by jquery.wikibase.referenceview. - var entityStore = new wb.store.EntityStore( null ); - entityStore.compile( { - P1: new wb.store.FetchedContent( { - title: new mw.Title( 'Property:P1' ), - content: new wb.datamodel.Property( { - id: 'P1', - type: 'property', - datatype: 'string', - label: { en: 'P1' } - } ) - } ) - } ); + var entityStore = { + get: function() { + return $.Deferred().resolve( new wb.store.FetchedContent( { + title: new mw.Title( 'Property:P1' ), + content: new wb.datamodel.Property( { + id: 'P1', + type: 'property', + datatype: 'string', + label: { en: 'P1' } + } ) + } ) ); + } + }; var valueViewBuilder = new wb.ValueViewBuilder( new vv.ExpertStore(), diff --git a/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinkgroupview.tests.js b/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinkgroupview.tests.js index 38e5942..9791133 100644 --- a/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinkgroupview.tests.js +++ b/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinkgroupview.tests.js @@ -14,7 +14,7 @@ options = $.extend( { entityId: 'i am an entity id', api: 'i am an api', - entityStore: new wb.store.EntityStore( null ) + entityStore: new wb.store.EntityStore() }, options ); var $sitelinkgroupview = $( '<div/>' ) diff --git a/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinklistview.tests.js b/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinklistview.tests.js index 41a37a1..537a844 100644 --- a/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinklistview.tests.js +++ b/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinklistview.tests.js @@ -14,7 +14,7 @@ options = $.extend( { entityId: 'i am an entity id', api: 'i am an api', - entityStore: new wb.store.EntityStore( null ), + entityStore: new wb.store.EntityStore(), allowedSiteIds: ['aawiki', 'enwiki'] }, options ); diff --git a/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinkview.tests.js b/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinkview.tests.js index 343c241..2dcad0a 100644 --- a/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinkview.tests.js +++ b/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinkview.tests.js @@ -12,7 +12,7 @@ */ function createSitelinkview( options ) { options = $.extend( { - entityStore: new wb.store.EntityStore( null ), + entityStore: new wb.store.EntityStore(), allowedSiteIds: ['aawiki', 'enwiki'] }, options ); diff --git a/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.snaklistview.tests.js b/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.snaklistview.tests.js index 1d1111d..b1c317b 100644 --- a/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.snaklistview.tests.js +++ b/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.snaklistview.tests.js @@ -28,8 +28,7 @@ // We need a filled entity store for the instances of $.wikibase.snakview.variations.Value // and $.wikibase.snakview created by $.wikibase.snaklistview. - var entityStore = new wb.store.EntityStore( null ); - entityStore.compile( { + var entities = { p1: new wb.store.FetchedContent( { title: new mw.Title( 'Property:P1' ), content: new wb.datamodel.Property( { @@ -62,7 +61,13 @@ datatype: 'string' } ) } ) - } ); + }; + + var entityStore = { + get: function( entityId ) { + return $.Deferred().resolve( entities[entityId] ); + } + }; var valueViewBuilder = new wb.ValueViewBuilder( new vv.ExpertStore(), diff --git a/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/resources.php b/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/resources.php index fa777aa..1c67e9f 100644 --- a/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/resources.php +++ b/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/resources.php @@ -48,7 +48,6 @@ 'wikibase.AbstractedRepoApi', 'wikibase.datamodel', 'wikibase.RepoApi', - 'wikibase.store.EntityStore', 'wikibase.store.FetchedContent', 'wikibase.ValueViewBuilder', ), @@ -138,7 +137,6 @@ 'wikibase.datamodel', 'wikibase.RepoApi', 'wikibase.store.FetchedContent', - 'wikibase.store.EntityStore', 'wikibase.ValueViewBuilder', 'valueFormatters' ), @@ -207,7 +205,6 @@ ), 'dependencies' => array( 'jquery.wikibase.snaklistview', - 'wikibase.store.EntityStore', 'wikibase.store.FetchedContent', 'wikibase.ValueViewBuilder', 'wikibase.datamodel', diff --git a/extensions/Wikibase/lib/tests/qunit/resources.php b/extensions/Wikibase/lib/tests/qunit/resources.php index 473b1cf..a141cc2 100644 --- a/extensions/Wikibase/lib/tests/qunit/resources.php +++ b/extensions/Wikibase/lib/tests/qunit/resources.php @@ -103,12 +103,21 @@ ), ), - 'wikibase.store.EntityStore.tests' => $moduleBase + array( + 'wikibase.store.CombiningEntityStore.tests' => $moduleBase + array( 'scripts' => array( - 'wikibase.store/store.EntityStore.tests.js', + 'wikibase.store/store.CombiningEntityStore.tests.js', ), 'dependencies' => array( - 'wikibase.store.EntityStore', + 'wikibase.store.CombiningEntityStore', + ), + ), + + 'wikibase.store.MwConfigEntityStore.tests' => $moduleBase + array( + 'scripts' => array( + 'wikibase.store/store.MwConfigEntityStore.tests.js', + ), + 'dependencies' => array( + 'wikibase.store.MwConfigEntityStore', ), ), @@ -136,15 +145,6 @@ ), 'dependencies' => array( 'wikibase.templates', - ), - ), - - 'wikibase.compileEntityStoreFromMwConfig.tests' => $moduleBase + array( - 'scripts' => array( - 'wikibase.compileEntityStoreFromMwConfig.tests.js', - ), - 'dependencies' => array( - 'wikibase.compileEntityStoreFromMwConfig', ), ), diff --git a/extensions/Wikibase/lib/tests/qunit/wikibase.RepoApi/wikibase.RepoApi.tests.js b/extensions/Wikibase/lib/tests/qunit/wikibase.RepoApi/wikibase.RepoApi.tests.js index 8f47671..6c459f6 100644 --- a/extensions/Wikibase/lib/tests/qunit/wikibase.RepoApi/wikibase.RepoApi.tests.js +++ b/extensions/Wikibase/lib/tests/qunit/wikibase.RepoApi/wikibase.RepoApi.tests.js @@ -324,26 +324,6 @@ } ); } ); - testrun.queue( qkey, function() { - abstractedApi.getEntities( entity.id, typesApiPropName ).done( function( entities ) { - - assert.ok( - entities[ entity.id ] instanceof wb.datamodel.Entity, - 'Entity "' + entity.id + '", the ' + type + ' has been set for, has been' + - 'returned by wb.AbstractedRepoApi.getEntities.' - ); - - var entityData = entities[ entity.id ].toMap(); - assert.deepEqual( - entityData[ type ] && entityData[ type ][ language ], - value, - 'Verified that ' + type + ' "' + value + '" has been set for language "' + language + '"' - ); - - testrun.dequeue( qkey ); - } ).fail( onFail ); - } ); - runTest(); } diff --git a/extensions/Wikibase/lib/tests/qunit/wikibase.compileEntityStoreFromMwConfig.tests.js b/extensions/Wikibase/lib/tests/qunit/wikibase.compileEntityStoreFromMwConfig.tests.js deleted file mode 100644 index 84800ee..0000000 --- a/extensions/Wikibase/lib/tests/qunit/wikibase.compileEntityStoreFromMwConfig.tests.js +++ /dev/null @@ -1,48 +0,0 @@ -/** - * @licence GNU GPL v2+ - * @author Adrian Lang < adrian.l...@wikimedia.de > - */ -( function( mw, wb ) { - 'use strict'; - - QUnit.module( 'wikibase.seedEntityStoreFromMwConfig', QUnit.newMwEnvironment() ); - - QUnit.test( 'is a function', function( assert ) { - assert.equal( - typeof wb.compileEntityStoreFromMwConfig, - 'function', - 'is a function.' - ); - } ); - - QUnit.test( 'does not do anything if the mw.config parameter is empty', function( assert ) { - QUnit.expect( 0 ); - - mw.config.set( 'wbUsedEntities', '[]' ); - - wb.compileEntityStoreFromMwConfig( { - compile: function() { - assert.ok( false, 'Triggered compile() although it should not have been called.' ); - } - } ); - } ); - - QUnit.test( 'calls compile() with the content of wbUsedEntitites', function( assert ) { - mw.config.set( - 'wbUsedEntities', - '{"P1":{"content":{"id":"P1","type":"property",' - + '"descriptions":{"en":{"language":"en","value":"1"}},' - + '"labels":{"en":{"language":"en","value":"1"}},"datatype":"string"},' - + '"title":"Property:P1"}}' - ); - wb.compileEntityStoreFromMwConfig( { - compile: function( objs ) { - assert.ok( - objs.P1, - 'Triggered compile() with proper mw.config variable contents.' - ); - } - } ); - } ); - -} )( mediaWiki, wikibase ); diff --git a/extensions/Wikibase/lib/tests/qunit/wikibase.store/store.EntityStore.tests.js b/extensions/Wikibase/lib/tests/qunit/wikibase.store/store.CombiningEntityStore.tests.js similarity index 70% rename from extensions/Wikibase/lib/tests/qunit/wikibase.store/store.EntityStore.tests.js rename to extensions/Wikibase/lib/tests/qunit/wikibase.store/store.CombiningEntityStore.tests.js index 9dcc504..2b02416 100644 --- a/extensions/Wikibase/lib/tests/qunit/wikibase.store/store.EntityStore.tests.js +++ b/extensions/Wikibase/lib/tests/qunit/wikibase.store/store.CombiningEntityStore.tests.js @@ -5,16 +5,15 @@ ( function( $, wb ) { 'use strict'; - QUnit.module( 'wikibase.store.EntityStore' ); + QUnit.module( 'wikibase.store.CombiningEntityStore' ); QUnit.test( 'Initialize', function( assert ) { - var entityStore = new wb.store.EntityStore( null ); + var entityStore = new wb.store.CombiningEntityStore(); assert.ok( entityStore.get, 'Entity store has get() method.' ); } ); QUnit.test( 'get() returns $.Promise', function( assert ) { - var api = { getEntities: function() { return $.Deferred(); } }; - var entityStore = new wb.store.EntityStore( api ), + var entityStore = new wb.store.CombiningEntityStore( [] ), promise = entityStore.get( 'id' ); assert.ok( promise.done, 'done() method exists.' ); @@ -24,10 +23,11 @@ 'Promise is resolved asynchronously, even if the entity is cached', 2, function( assert ) { - var entityStore = new wb.store.EntityStore( null ); - entityStore.compile( { - id: 'value' - } ); + var entityStore = new wb.store.CombiningEntityStore( [ { + get: function( entityId ) { + return $.Deferred().resolve(); + } + } ] ); var promise = entityStore.get( 'id' ); assert.equal( promise.state(), 'pending', 'Promise is pending.' ); diff --git a/extensions/Wikibase/lib/tests/qunit/wikibase.store/store.MwConfigEntityStore.tests.js b/extensions/Wikibase/lib/tests/qunit/wikibase.store/store.MwConfigEntityStore.tests.js new file mode 100644 index 0000000..321b3e3 --- /dev/null +++ b/extensions/Wikibase/lib/tests/qunit/wikibase.store/store.MwConfigEntityStore.tests.js @@ -0,0 +1,41 @@ +/** + * @licence GNU GPL v2+ + * @author Adrian Lang < adrian.l...@wikimedia.de > + */ +( function( mw, wb ) { + 'use strict'; + + QUnit.module( 'wikibase.store.MwConfigEntityStore', QUnit.newMwEnvironment() ); + + QUnit.test( 'is a function', function( assert ) { + assert.equal( + typeof wb.store.MwConfigEntityStore, + 'function', + 'is a function.' + ); + } ); + + QUnit.test( 'Resolves with content from wbUsedEntitites', 1, function( assert ) { + mw.config.set( + 'wbUsedEntities', + '{"P1":{"content":{"id":"P1","type":"property",' + + '"descriptions":{"en":{"language":"en","value":"1"}},' + + '"labels":{"en":{"language":"en","value":"1"}},"datatype":"string"},' + + '"title":"Property:P1"}}' + ); + + var store = new wb.store.MwConfigEntityStore( { + unserialize: function( data ) { + return data; + } + } ); + + QUnit.stop(); + store.get( 'P1' ).done( function( entity ) { + QUnit.start(); + + assert.ok( entity ); + } ); + } ); + +} )( mediaWiki, wikibase ); diff --git a/extensions/Wikibase/repo/i18n/de.json b/extensions/Wikibase/repo/i18n/de.json index 15a11ba..ba5799c 100644 --- a/extensions/Wikibase/repo/i18n/de.json +++ b/extensions/Wikibase/repo/i18n/de.json @@ -49,6 +49,7 @@ "wikibase-statements": "Aussagen", "wikibase-attributes": "Eigenschaften", "wikibase-terms": "In anderen Sprachen", + "wikibase-sitelinkgroupview-input-help-message": "Ergänzt einen Websitelink durch die Angabe einer Website und einer Seite dieser Website, bearbeitet oder entfernt vorhandene Websitelinks.", "wikibase-sitelinks-empty": "Noch keine Seite mit diesem Datenobjekt verknüpft.", "wikibase-sitelinks-input-help-message": "Leg eine Verknüpfung zu einer diesem Datenobjekt entsprechenden Seite fest.", "wikibase-sitelinks-special": "Seiten auf anderen Websites, die auf dieses Objekt verweisen", diff --git a/extensions/Wikibase/repo/i18n/et.json b/extensions/Wikibase/repo/i18n/et.json index 0201f26..44a6516 100644 --- a/extensions/Wikibase/repo/i18n/et.json +++ b/extensions/Wikibase/repo/i18n/et.json @@ -30,7 +30,7 @@ "wikibase-description-input-help-message": "Sisesta selle üksuse lühikirjeldus järgmises keeles: $1", "wikibase-fingerprintview-input-help-message": "Sisesta selle olemi silt, lühikirjeldus ja rööpkujud järgmises keeles: $1", "wikibase-claims": "Väited", - "wikibase-statements": "Lausungid", + "wikibase-statements": "Avaldused", "wikibase-terms": "Teistes keeltes", "wikibase-sitelinks-empty": "Ükski lehekülg pole veel selle üksusega lingitud.", "wikibase-sitelinks-input-help-message": "Määra selle üksusega seotud leheküljele viitav link.", @@ -162,7 +162,7 @@ "wikibase-modifyentity-id": "Identifikaator:", "wikibase-modifyterm-language": "Keel:", "special-mergeitems": "Kahe üksuse liitmine", - "wikibase-mergeitems-intro": "Kui liidad kaks üksust, teisaldatakse kõik sildid, kirjeldused, rööpkujud, võrgukohalingid ja lausungid ühest üksusest teise.", + "wikibase-mergeitems-intro": "Kui liidad kaks üksust, teisaldatakse kõik sildid, kirjeldused, rööpkujud, võrgukohalingid ja avaldused ühest üksusest teise.", "wikibase-mergeitems-fromid": "Üksus, mida liidad, identifikaator", "wikibase-mergeitems-toid": "Üksus, millega liidad, identifikaator", "wikibase-mergeitems-submit": "Liida üksused", diff --git a/extensions/Wikibase/repo/i18n/fa.json b/extensions/Wikibase/repo/i18n/fa.json index e78a4c9..8738b7b 100644 --- a/extensions/Wikibase/repo/i18n/fa.json +++ b/extensions/Wikibase/repo/i18n/fa.json @@ -51,6 +51,7 @@ "wikibase-statements": "اظهارات", "wikibase-attributes": "ویژگیها", "wikibase-terms": "به زبانهای دیگر", + "wikibase-sitelinkgroupview-input-help-message": "پیوندی به مشخص کردن وبگاه و صفحهٔ آن وبگاه بیافزایید، پیوندهای وبگاههای موجود را ویرایش یا حذف کنید.", "wikibase-sitelinks-empty": "این آیتم هنوز هیچ صفحهای پیوند ندارد.", "wikibase-sitelinks-input-help-message": "پیوندی به صفحهای مرتبط با این آیتم ایجاد کنید.", "wikibase-sitelinks-special": "صفحههای دیگر وبگاهها که به این آیتم پیوند دارند", diff --git a/extensions/Wikibase/repo/i18n/fr.json b/extensions/Wikibase/repo/i18n/fr.json index 52c352e..620e446 100644 --- a/extensions/Wikibase/repo/i18n/fr.json +++ b/extensions/Wikibase/repo/i18n/fr.json @@ -59,6 +59,7 @@ "wikibase-statements": "Déclarations", "wikibase-attributes": "Attributs", "wikibase-terms": "Autres langues", + "wikibase-sitelinkgroupview-input-help-message": "Ajouter un lien de site en spécifiant un site et une page de ce site, modifier ou supprimer des liens de site existant.", "wikibase-sitelinks-empty": "Aucune page n’est encore liée à cet élément.", "wikibase-sitelinks-input-help-message": "Créer un lien vers une page relative à cet élément.", "wikibase-sitelinks-special": "Pages sur d’autres sites liées à cet élément", diff --git a/extensions/Wikibase/repo/i18n/mk.json b/extensions/Wikibase/repo/i18n/mk.json index 1666e5a..45fe760 100644 --- a/extensions/Wikibase/repo/i18n/mk.json +++ b/extensions/Wikibase/repo/i18n/mk.json @@ -31,6 +31,7 @@ "wikibase-statements": "Искази", "wikibase-attributes": "Атрибути", "wikibase-terms": "На други јазици", + "wikibase-sitelinkgroupview-input-help-message": "Додајте врска укажувајќи мрежно место и страницата на него, или пак отстранете ги постоечките", "wikibase-sitelinks-empty": "Досега нема страници поврзани со овој предмет.", "wikibase-sitelinks-input-help-message": "Задајте врска до страница поврзана со овој предмет.", "wikibase-sitelinks-special": "Страници на други викија сврзани со овој предмет", diff --git a/extensions/Wikibase/repo/i18n/pt.json b/extensions/Wikibase/repo/i18n/pt.json index 49a7f29..11aa9d6 100644 --- a/extensions/Wikibase/repo/i18n/pt.json +++ b/extensions/Wikibase/repo/i18n/pt.json @@ -40,6 +40,7 @@ "wikibase-statements": "Declarações", "wikibase-attributes": "Atributos", "wikibase-terms": "Noutras línguas", + "wikibase-sitelinkgroupview-input-help-message": "Adicione uma ligação de sítio, especificando um sítio e uma respetiva página, edite ou remova ligações de sítio existentes.", "wikibase-sitelinks-empty": "Nenhuma página está ligada a este item ainda.", "wikibase-sitelinks-input-help-message": "Defina uma ligação para uma página relacionada com este item.", "wikibase-sitelinks-special": "Páginas em outros sítios com ligação a este item", diff --git a/extensions/Wikibase/repo/i18n/qqq.json b/extensions/Wikibase/repo/i18n/qqq.json index ed25481..d17dc57 100644 --- a/extensions/Wikibase/repo/i18n/qqq.json +++ b/extensions/Wikibase/repo/i18n/qqq.json @@ -143,7 +143,7 @@ "wikibase-gotolinkedpage-lookup-fieldset": "This is the title for the fieldset on the special page for specifiying the search arguments. This is the search for a linked page (sitelink) by site and item ID.", "wikibase-gotolinkedpage-lookup-site": "Label for the textfield holding the site ID. See also Wikidata's glossary for [[d:Wikidata:Glossary#sitelinks|site links]].\n{{Identical|Site}}", "wikibase-gotolinkedpage-lookup-item": "Label for the textfield holding the item ID. See also Wikidata's glossary for [[d:Wikidata:Glossary#Items|items]].", - "wikibase-gotolinkedpage-submit": "Text for the submit button in the search form which if successfully will go (redirect) to the sepcified linked page (sitelink).", + "wikibase-gotolinkedpage-submit": "Text for the submit button in the search form which if successfully will go (redirect) to the sepcified linked page (sitelink).\n{{Identical|Go}}", "special-itemdisambiguation": "{{doc-special|ItemDisambiguation}}\nThis special page returns all items with a given label. It provides an interface to disambiguate them. See also Wikidata's glossary for [[d:Wikidata:Glossary#languageattribute-label|label]] and [[d:Wikidata:Glossary#Items|items]].", "wikibase-itemdisambiguation-lookup-fieldset": "This is the title for the fieldset on the special page for further refining the search. This is the search by language and label.", "wikibase-itemdisambiguation-lookup-language": "Label for the textfield holding the language id.\n{{Identical|Language}}", diff --git a/extensions/Wikibase/repo/i18n/zh-hans.json b/extensions/Wikibase/repo/i18n/zh-hans.json index bcbc657..121872c 100644 --- a/extensions/Wikibase/repo/i18n/zh-hans.json +++ b/extensions/Wikibase/repo/i18n/zh-hans.json @@ -53,6 +53,7 @@ "wikibase-statements": "声明", "wikibase-attributes": "属性", "wikibase-terms": "其他语言", + "wikibase-sitelinkgroupview-input-help-message": "通过指定一个站点和对应站点的一个页面添加、编辑站点链接,或移除现有的站点链接。", "wikibase-sitelinks-empty": "尚无页面连接至该项。", "wikibase-sitelinks-input-help-message": "请设置至该项相关页面的链接。", "wikibase-sitelinks-special": "链接至该项的其他网站页面", diff --git a/extensions/Wikibase/repo/includes/ClaimSummaryBuilder.php b/extensions/Wikibase/repo/includes/ClaimSummaryBuilder.php index 5e98795..04c56b1 100644 --- a/extensions/Wikibase/repo/includes/ClaimSummaryBuilder.php +++ b/extensions/Wikibase/repo/includes/ClaimSummaryBuilder.php @@ -3,6 +3,7 @@ namespace Wikibase; use InvalidArgumentException; +use Wikibase\Repo\Diff\ClaimDiffer; /** * EditSummary-Builder for claim operations diff --git a/extensions/Wikibase/repo/includes/ClaimDiffer.php b/extensions/Wikibase/repo/includes/Diff/ClaimDiffer.php similarity index 94% rename from extensions/Wikibase/repo/includes/ClaimDiffer.php rename to extensions/Wikibase/repo/includes/Diff/ClaimDiffer.php index bd01646..ad30474 100644 --- a/extensions/Wikibase/repo/includes/ClaimDiffer.php +++ b/extensions/Wikibase/repo/includes/Diff/ClaimDiffer.php @@ -1,10 +1,14 @@ <?php -namespace Wikibase; +namespace Wikibase\Repo\Diff; use Diff\Differ\Differ; use Diff\DiffOp\Diff\Diff; use Diff\DiffOp\DiffOpChange; +use Wikibase\DataModel\Claim\Claim; +use Wikibase\DataModel\ReferenceList; +use Wikibase\DataModel\Snak\SnakList; +use Wikibase\DataModel\Statement\Statement; /** * Class for generating a ClaimDifference given two claims. diff --git a/extensions/Wikibase/repo/includes/ClaimDifference.php b/extensions/Wikibase/repo/includes/Diff/ClaimDifference.php similarity index 98% rename from extensions/Wikibase/repo/includes/ClaimDifference.php rename to extensions/Wikibase/repo/includes/Diff/ClaimDifference.php index a05fc0f..8d0fd65 100644 --- a/extensions/Wikibase/repo/includes/ClaimDifference.php +++ b/extensions/Wikibase/repo/includes/Diff/ClaimDifference.php @@ -1,6 +1,6 @@ <?php -namespace Wikibase; +namespace Wikibase\Repo\Diff; use Comparable; use Diff\DiffOp\Diff\Diff; diff --git a/extensions/Wikibase/repo/includes/ClaimDifferenceVisualizer.php b/extensions/Wikibase/repo/includes/Diff/ClaimDifferenceVisualizer.php similarity index 98% rename from extensions/Wikibase/repo/includes/ClaimDifferenceVisualizer.php rename to extensions/Wikibase/repo/includes/Diff/ClaimDifferenceVisualizer.php index 021507c..808dc24 100644 --- a/extensions/Wikibase/repo/includes/ClaimDifferenceVisualizer.php +++ b/extensions/Wikibase/repo/includes/Diff/ClaimDifferenceVisualizer.php @@ -1,6 +1,6 @@ <?php -namespace Wikibase; +namespace Wikibase\Repo\Diff; use Diff\DiffOp\Diff\Diff; use Diff\DiffOp\DiffOpAdd; @@ -13,6 +13,10 @@ use RuntimeException; use ValueFormatters\FormattingException; use ValueFormatters\ValueFormatter; +use Wikibase\DataModel\Claim\Claim; +use Wikibase\DataModel\Entity\EntityId; +use Wikibase\DataModel\Snak\Snak; +use Wikibase\DataModel\Snak\SnakList; use Wikibase\Lib\Serializers\ClaimSerializer; use Wikibase\Lib\SnakFormatter; diff --git a/extensions/Wikibase/repo/includes/DiffOpValueFormatter.php b/extensions/Wikibase/repo/includes/Diff/DiffOpValueFormatter.php similarity index 99% rename from extensions/Wikibase/repo/includes/DiffOpValueFormatter.php rename to extensions/Wikibase/repo/includes/Diff/DiffOpValueFormatter.php index 24c956c..1bfb0c2 100644 --- a/extensions/Wikibase/repo/includes/DiffOpValueFormatter.php +++ b/extensions/Wikibase/repo/includes/Diff/DiffOpValueFormatter.php @@ -1,6 +1,6 @@ <?php -namespace Wikibase; +namespace Wikibase\Repo\Diff; use Diff; use Html; diff --git a/extensions/Wikibase/repo/includes/DiffView.php b/extensions/Wikibase/repo/includes/Diff/DiffView.php similarity index 99% rename from extensions/Wikibase/repo/includes/DiffView.php rename to extensions/Wikibase/repo/includes/Diff/DiffView.php index 2d63337..8b15c61 100644 --- a/extensions/Wikibase/repo/includes/DiffView.php +++ b/extensions/Wikibase/repo/includes/Diff/DiffView.php @@ -1,6 +1,6 @@ <?php -namespace Wikibase; +namespace Wikibase\Repo\Diff; use ContextSource; use Diff\DiffOp\Diff\Diff; diff --git a/extensions/Wikibase/repo/includes/EntityContentDiffView.php b/extensions/Wikibase/repo/includes/Diff/EntityContentDiffView.php similarity index 99% rename from extensions/Wikibase/repo/includes/EntityContentDiffView.php rename to extensions/Wikibase/repo/includes/Diff/EntityContentDiffView.php index a6c204d..8cd7d2e 100644 --- a/extensions/Wikibase/repo/includes/EntityContentDiffView.php +++ b/extensions/Wikibase/repo/includes/Diff/EntityContentDiffView.php @@ -1,6 +1,6 @@ <?php -namespace Wikibase; +namespace Wikibase\Repo\Diff; use Content; use Diff\Comparer\ComparableComparer; diff --git a/extensions/Wikibase/repo/includes/EntityDiffVisualizer.php b/extensions/Wikibase/repo/includes/Diff/EntityDiffVisualizer.php similarity index 98% rename from extensions/Wikibase/repo/includes/EntityDiffVisualizer.php rename to extensions/Wikibase/repo/includes/Diff/EntityDiffVisualizer.php index 56bd8ec..0c73e69 100644 --- a/extensions/Wikibase/repo/includes/EntityDiffVisualizer.php +++ b/extensions/Wikibase/repo/includes/Diff/EntityDiffVisualizer.php @@ -1,6 +1,6 @@ <?php -namespace Wikibase; +namespace Wikibase\Repo\Diff; use Diff\DiffOp\Diff\Diff; use Diff\DiffOp; @@ -10,6 +10,7 @@ use IContextSource; use MWException; use SiteStore; +use Wikibase\DataModel\Entity\Diff\EntityDiff; use Wikibase\Lib\Store\EntityTitleLookup; use Wikibase\Repo\Content\EntityContentDiff; diff --git a/extensions/Wikibase/repo/includes/actions/EditEntityAction.php b/extensions/Wikibase/repo/includes/actions/EditEntityAction.php index d6ddfcd..b5980d8 100644 --- a/extensions/Wikibase/repo/includes/actions/EditEntityAction.php +++ b/extensions/Wikibase/repo/includes/actions/EditEntityAction.php @@ -18,6 +18,9 @@ use Wikibase\Lib\EscapingValueFormatter; use Wikibase\Lib\SnakFormatter; use Wikibase\Repo\Content\EntityContentDiff; +use Wikibase\Repo\Diff\ClaimDiffer; +use Wikibase\Repo\Diff\ClaimDifferenceVisualizer; +use Wikibase\Repo\Diff\EntityDiffVisualizer; use Wikibase\Repo\WikibaseRepo; /** diff --git a/extensions/Wikibase/repo/includes/api/SetClaim.php b/extensions/Wikibase/repo/includes/api/SetClaim.php index aa3af6d..443b2cc 100644 --- a/extensions/Wikibase/repo/includes/api/SetClaim.php +++ b/extensions/Wikibase/repo/includes/api/SetClaim.php @@ -13,12 +13,12 @@ use OutOfBoundsException; use UsageException; use Wikibase\ChangeOp\ClaimChangeOpFactory; -use Wikibase\ClaimDiffer; use Wikibase\ClaimSummaryBuilder; use Wikibase\DataModel\Claim\Claim; use Wikibase\DataModel\Claim\Claims; use Wikibase\DataModel\Entity\Entity; use Wikibase\Lib\Serializers\SerializerFactory; +use Wikibase\Repo\Diff\ClaimDiffer; use Wikibase\Repo\WikibaseRepo; use Wikibase\Summary; diff --git a/extensions/Wikibase/repo/includes/content/EntityHandler.php b/extensions/Wikibase/repo/includes/content/EntityHandler.php index c74ce31..ef24453 100644 --- a/extensions/Wikibase/repo/includes/content/EntityHandler.php +++ b/extensions/Wikibase/repo/includes/content/EntityHandler.php @@ -136,7 +136,7 @@ * @return string */ protected function getDiffEngineClass() { - return '\Wikibase\EntityContentDiffView'; + return '\Wikibase\Repo\Diff\EntityContentDiffView'; } /** diff --git a/extensions/Wikibase/repo/resources/Resources.php b/extensions/Wikibase/repo/resources/Resources.php index 16c9432..70c88c8 100644 --- a/extensions/Wikibase/repo/resources/Resources.php +++ b/extensions/Wikibase/repo/resources/Resources.php @@ -39,9 +39,12 @@ 'wikibase.EntityInitializer', 'wikibase.parsers.getStore', 'wikibase.RepoApi', + 'wikibase.serialization.entities', 'wikibase.sites', - 'wikibase.store.EntityStore', - 'wikibase.compileEntityStoreFromMwConfig', + 'wikibase.store.ApiEntityStore', + 'wikibase.store.CombiningEntityStore', + 'wikibase.store.FetchedContentUnserializer', + 'wikibase.store.MwConfigEntityStore', 'wikibase.ValueViewBuilder' ), 'messages' => array( diff --git a/extensions/Wikibase/repo/resources/wikibase.ui.entityViewInit.js b/extensions/Wikibase/repo/resources/wikibase.ui.entityViewInit.js index 6f634bb..4cd5053 100644 --- a/extensions/Wikibase/repo/resources/wikibase.ui.entityViewInit.js +++ b/extensions/Wikibase/repo/resources/wikibase.ui.entityViewInit.js @@ -85,13 +85,36 @@ } /** + * Builds an entity store. + * @todo Move to a top-level factory or application scope + * + * @param {wikibase.RepoApi} repoApi + * @return {wikibase.store.CombiningEntityStore} + */ + function buildEntityStore( repoApi ) { + // Unserializer for fetched content whose content is a wb.datamodel.Entity: + var fetchedEntityUnserializer = new wb.store.FetchedContentUnserializer( { + contentUnserializer: new wb.serialization.EntityUnserializer() + } ); + + return new wb.store.CombiningEntityStore( [ + new wb.store.MwConfigEntityStore( fetchedEntityUnserializer ), + new wb.store.ApiEntityStore( + repoApi, + fetchedEntityUnserializer, + [ mw.config.get( 'wgUserLanguage' ) ] + ) + ] ); + + } + + /** * @param {wikibase.datamodel.Entity} entity * @param {jQuery} $entityview */ function createEntityDom( entity, $entityview ) { - var abstractedRepoApi = new wb.AbstractedRepoApi(); - var entityStore = new wb.store.EntityStore( abstractedRepoApi ); - wb.compileEntityStoreFromMwConfig( entityStore ); + var abstractedRepoApi = new wb.AbstractedRepoApi(), + entityStore = buildEntityStore( abstractedRepoApi ); $entityview .entityview( { diff --git a/extensions/Wikibase/repo/tests/phpunit/includes/ClaimSummaryBuilderTest.php b/extensions/Wikibase/repo/tests/phpunit/includes/ClaimSummaryBuilderTest.php index 7ca014c..a365c9a 100644 --- a/extensions/Wikibase/repo/tests/phpunit/includes/ClaimSummaryBuilderTest.php +++ b/extensions/Wikibase/repo/tests/phpunit/includes/ClaimSummaryBuilderTest.php @@ -5,7 +5,6 @@ use DataValues\StringValue; use Diff\Comparer\ComparableComparer; use Diff\Differ\OrderedListDiffer; -use Wikibase\ClaimDiffer; use Wikibase\ClaimSummaryBuilder; use Wikibase\DataModel\Claim\Claim; use Wikibase\DataModel\Claim\Claims; @@ -16,6 +15,7 @@ use Wikibase\DataModel\Snak\PropertyValueSnak; use Wikibase\DataModel\Snak\Snak; use Wikibase\DataModel\Snak\SnakList; +use Wikibase\Repo\Diff\ClaimDiffer; /** * @covers Wikibase\ClaimSummaryBuilder diff --git a/extensions/Wikibase/repo/tests/phpunit/includes/ClaimDifferTest.php b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferTest.php similarity index 93% rename from extensions/Wikibase/repo/tests/phpunit/includes/ClaimDifferTest.php rename to extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferTest.php index e371eb8..8f6760f 100644 --- a/extensions/Wikibase/repo/tests/phpunit/includes/ClaimDifferTest.php +++ b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferTest.php @@ -8,16 +8,16 @@ use Diff\DiffOp\DiffOpChange; use Diff\DiffOp\DiffOpRemove; use Diff\Differ\OrderedListDiffer; -use Wikibase\ClaimDiffer; -use Wikibase\ClaimDifference; use Wikibase\DataModel\Claim\Claim; use Wikibase\DataModel\Claim\Statement; use Wikibase\DataModel\ReferenceList; use Wikibase\DataModel\Snak\PropertyNoValueSnak; use Wikibase\DataModel\Snak\SnakList; +use Wikibase\Repo\Diff\ClaimDiffer; +use Wikibase\Repo\Diff\ClaimDifference; /** - * @covers Wikibase\ClaimDiffer + * @covers Wikibase\Repo\Diff\ClaimDiffer * * @group Wikibase * @group WikibaseRepo @@ -119,7 +119,7 @@ $differ = new ClaimDiffer( new OrderedListDiffer( new ComparableComparer() ) ); $actual = $differ->diffClaims( $oldClaim, $newClaim ); - $this->assertInstanceOf( 'Wikibase\ClaimDifference', $actual ); + $this->assertInstanceOf( 'Wikibase\Repo\Diff\ClaimDifference', $actual ); if ( !$expected->equals( $actual ) ) { $this->assertEquals($expected, $actual); diff --git a/extensions/Wikibase/repo/tests/phpunit/includes/ClaimDifferenceTest.php b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferenceTest.php similarity index 92% rename from extensions/Wikibase/repo/tests/phpunit/includes/ClaimDifferenceTest.php rename to extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferenceTest.php index 426b991..59d75cf 100644 --- a/extensions/Wikibase/repo/tests/phpunit/includes/ClaimDifferenceTest.php +++ b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferenceTest.php @@ -5,13 +5,13 @@ use Diff\DiffOp\Diff\Diff; use Diff\DiffOp\DiffOpAdd; use Diff\DiffOp\DiffOpChange; -use Wikibase\ClaimDifference; use Wikibase\DataModel\Claim\Statement; use Wikibase\DataModel\Reference; use Wikibase\DataModel\Snak\PropertyNoValueSnak; +use Wikibase\Repo\Diff\ClaimDifference; /** - * @covers Wikibase\ClaimDifference + * @covers Wikibase\Repo\Diff\ClaimDifference * * @group Wikibase * @group WikibaseRepo @@ -32,7 +32,7 @@ $actual = $difference->getReferenceChanges(); - $this->assertInstanceOf( 'Diff\Diff', $actual ); + $this->assertInstanceOf( 'Diff\DiffOp\Diff\Diff', $actual ); $this->assertEquals( $expected, $actual ); } @@ -45,7 +45,7 @@ $actual = $difference->getQualifierChanges(); - $this->assertInstanceOf( 'Diff\Diff', $actual ); + $this->assertInstanceOf( 'Diff\DiffOp\Diff\Diff', $actual ); $this->assertEquals( $expected, $actual ); } @@ -59,7 +59,7 @@ $actual = $difference->getMainSnakChange(); - $this->assertInstanceOf( 'Diff\DiffOpChange', $actual ); + $this->assertInstanceOf( 'Diff\DiffOp\DiffOpChange', $actual ); $this->assertEquals( $expected, $actual ); } @@ -73,7 +73,7 @@ $actual = $difference->getRankChange(); - $this->assertInstanceOf( 'Diff\DiffOpChange', $actual ); + $this->assertInstanceOf( 'Diff\DiffOp\DiffOpChange', $actual ); $this->assertEquals( $expected, $actual ); } diff --git a/extensions/Wikibase/repo/tests/phpunit/includes/ClaimDifferenceVisualizerTest.php b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferenceVisualizerTest.php similarity index 97% rename from extensions/Wikibase/repo/tests/phpunit/includes/ClaimDifferenceVisualizerTest.php rename to extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferenceVisualizerTest.php index 3a75ed7..96361c2 100644 --- a/extensions/Wikibase/repo/tests/phpunit/includes/ClaimDifferenceVisualizerTest.php +++ b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferenceVisualizerTest.php @@ -7,8 +7,6 @@ use Diff\DiffOp\DiffOpAdd; use Diff\DiffOp\DiffOpChange; use Diff\DiffOp\DiffOpRemove; -use Wikibase\ClaimDifference; -use Wikibase\ClaimDifferenceVisualizer; use Wikibase\DataModel\Claim\Claim; use Wikibase\DataModel\Claim\Statement; use Wikibase\DataModel\Entity\PropertyId; @@ -19,9 +17,11 @@ use Wikibase\DataModel\Snak\PropertyValueSnak; use Wikibase\DataModel\Snak\SnakList; use Wikibase\Lib\SnakFormatter; +use Wikibase\Repo\Diff\ClaimDifference; +use Wikibase\Repo\Diff\ClaimDifferenceVisualizer; /** - * @covers Wikibase\ClaimDifferenceVisualizer + * @covers Wikibase\Repo\Diff\ClaimDifferenceVisualizer * * @group Wikibase * @group WikibaseRepo @@ -70,7 +70,7 @@ public function testConstruction(){ $instance = $this->newClaimDifferenceVisualizer(); - $this->assertInstanceOf( 'Wikibase\ClaimDifferenceVisualizer', $instance ); + $this->assertInstanceOf( 'Wikibase\Repo\Diff\ClaimDifferenceVisualizer', $instance ); } public function testConstructionWithBadDetailsFormatter(){ diff --git a/extensions/Wikibase/repo/tests/phpunit/includes/DiffOpValueFormatterTest.php b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/DiffOpValueFormatterTest.php similarity index 93% rename from extensions/Wikibase/repo/tests/phpunit/includes/DiffOpValueFormatterTest.php rename to extensions/Wikibase/repo/tests/phpunit/includes/Diff/DiffOpValueFormatterTest.php index 39d65e4..5942478 100644 --- a/extensions/Wikibase/repo/tests/phpunit/includes/DiffOpValueFormatterTest.php +++ b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/DiffOpValueFormatterTest.php @@ -2,10 +2,10 @@ namespace Wikibase\Test; -use Wikibase\DiffOpValueFormatter; +use Wikibase\Repo\Diff\DiffOpValueFormatter; /** - * @covers Wikibase\DiffOpValueFormatter + * @covers Wikibase\Repo\Diff\DiffOpValueFormatter * * @group Wikibase * @group WikibaseRepo diff --git a/extensions/Wikibase/repo/tests/phpunit/includes/DiffViewTest.php b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/DiffViewTest.php similarity index 97% rename from extensions/Wikibase/repo/tests/phpunit/includes/DiffViewTest.php rename to extensions/Wikibase/repo/tests/phpunit/includes/Diff/DiffViewTest.php index de3f104..d86f7d7 100644 --- a/extensions/Wikibase/repo/tests/phpunit/includes/DiffViewTest.php +++ b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/DiffViewTest.php @@ -6,12 +6,12 @@ use Diff\DiffOp\DiffOpAdd; use Diff\DiffOp\DiffOpChange; use Diff\DiffOp\DiffOpRemove; -use Wikibase\DiffView; +use Wikibase\Repo\Diff\DiffView; use Wikibase\Repo\WikibaseRepo; use Wikibase\DataModel\Entity\ItemId; /** - * @covers Wikibase\DiffView + * @covers Wikibase\Repo\Diff\DiffView * * @group WikibaseRepo * @group Wikibase diff --git a/extensions/Wikibase/repo/tests/phpunit/includes/EntityContentDiffViewTest.php b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityContentDiffViewTest.php similarity index 98% rename from extensions/Wikibase/repo/tests/phpunit/includes/EntityContentDiffViewTest.php rename to extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityContentDiffViewTest.php index 2892f80..0b9179b 100644 --- a/extensions/Wikibase/repo/tests/phpunit/includes/EntityContentDiffViewTest.php +++ b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityContentDiffViewTest.php @@ -8,12 +8,12 @@ use Title; use Wikibase\DataModel\Entity\Item; use Wikibase\DataModel\Entity\ItemId; -use Wikibase\EntityContentDiffView; use Wikibase\ItemContent; use Wikibase\Lib\Store\EntityRedirect; +use Wikibase\Repo\Diff\EntityContentDiffView; /** - * @covers Wikibase\EntityContentDiffView + * @covers Wikibase\Repo\Diff\EntityContentDiffView * * @group Wikibase * @group WikibaseRepo diff --git a/extensions/Wikibase/repo/tests/phpunit/includes/EntityDiffVisualizerTest.php b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityDiffVisualizerTest.php similarity index 92% rename from extensions/Wikibase/repo/tests/phpunit/includes/EntityDiffVisualizerTest.php rename to extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityDiffVisualizerTest.php index 69dd4ef..cc3dc85 100644 --- a/extensions/Wikibase/repo/tests/phpunit/includes/EntityDiffVisualizerTest.php +++ b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityDiffVisualizerTest.php @@ -8,15 +8,15 @@ use IContextSource; use Language; use Site; -use Wikibase\ClaimDiffer; -use Wikibase\ClaimDifferenceVisualizer; use Wikibase\DataModel\Entity\EntityDiff; -use Wikibase\EntityDiffVisualizer; use Wikibase\Repo\Content\EntityContentDiff; +use Wikibase\Repo\Diff\ClaimDiffer; +use Wikibase\Repo\Diff\ClaimDifferenceVisualizer; +use Wikibase\Repo\Diff\EntityDiffVisualizer; use Wikibase\Repo\WikibaseRepo; /** - * @covers Wikibase\EntityDiffVisualizer + * @covers Wikibase\Repo\Diff\EntityDiffVisualizer * * @group Wikibase * @group WikibaseRepo @@ -98,7 +98,7 @@ * @return ClaimDiffer */ protected function getMockClaimDiffer() { - $mock = $this->getMockBuilder( 'Wikibase\ClaimDiffer' ) + $mock = $this->getMockBuilder( 'Wikibase\Repo\Diff\ClaimDiffer' ) ->disableOriginalConstructor() ->getMock(); return $mock; @@ -108,7 +108,7 @@ * @return ClaimDifferenceVisualizer */ protected function getMockClaimDiffVisualizer() { - $mock = $this->getMockBuilder( 'Wikibase\ClaimDifferenceVisualizer' ) + $mock = $this->getMockBuilder( 'Wikibase\Repo\Diff\ClaimDifferenceVisualizer' ) ->disableOriginalConstructor() ->getMock(); return $mock; diff --git a/vendor/autoload.php b/vendor/autoload.php index 17262ee..fc3a3d3 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -4,4 +4,4 @@ require_once __DIR__ . '/composer' . '/autoload_real.php'; -return ComposerAutoloaderInit6c4a97a82f7fd0042859bd522c880871::getLoader(); +return ComposerAutoloaderInit04843eff1b8cfffc9c804180fb5156df::getLoader(); diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index ab100df..f4b218b 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -294,9 +294,6 @@ 'Wikibase\\ChangesTable' => $baseDir . '/extensions/Wikibase/lib/includes/ChangesTable.php', 'Wikibase\\ChunkAccess' => $baseDir . '/extensions/Wikibase/lib/includes/store/ChunkAccess.php', 'Wikibase\\ChunkCache' => $baseDir . '/extensions/Wikibase/lib/includes/store/ChunkCache.php', - 'Wikibase\\ClaimDiffer' => $baseDir . '/extensions/Wikibase/repo/includes/ClaimDiffer.php', - 'Wikibase\\ClaimDifference' => $baseDir . '/extensions/Wikibase/repo/includes/ClaimDifference.php', - 'Wikibase\\ClaimDifferenceVisualizer' => $baseDir . '/extensions/Wikibase/repo/includes/ClaimDifferenceVisualizer.php', 'Wikibase\\ClaimHtmlGenerator' => $baseDir . '/extensions/Wikibase/repo/includes/ClaimHtmlGenerator.php', 'Wikibase\\ClaimSummaryBuilder' => $baseDir . '/extensions/Wikibase/repo/includes/ClaimSummaryBuilder.php', 'Wikibase\\ClientHooks' => $baseDir . '/extensions/Wikibase/client/WikibaseClient.hooks.php', @@ -418,8 +415,6 @@ 'Wikibase\\DataModel\\Term\\TermList' => $vendorDir . '/wikibase/data-model/src/Term/TermList.php', 'Wikibase\\DataTypeSelector' => $baseDir . '/extensions/Wikibase/repo/includes/DataTypeSelector.php', 'Wikibase\\DiffChange' => $baseDir . '/extensions/Wikibase/lib/includes/changes/DiffChange.php', - 'Wikibase\\DiffOpValueFormatter' => $baseDir . '/extensions/Wikibase/repo/includes/DiffOpValueFormatter.php', - 'Wikibase\\DiffView' => $baseDir . '/extensions/Wikibase/repo/includes/DiffView.php', 'Wikibase\\DirectSqlStore' => $baseDir . '/extensions/Wikibase/client/includes/store/sql/DirectSqlStore.php', 'Wikibase\\DispatchStats' => $baseDir . '/extensions/Wikibase/repo/includes/store/sql/DispatchStats.php', 'Wikibase\\DummyPropertyInfoStore' => $baseDir . '/extensions/Wikibase/lib/includes/store/DummyPropertyInfoStore.php', @@ -431,8 +426,6 @@ 'Wikibase\\EditPropertyAction' => $baseDir . '/extensions/Wikibase/repo/includes/actions/EditPropertyAction.php', 'Wikibase\\EntityChange' => $baseDir . '/extensions/Wikibase/lib/includes/changes/EntityChange.php', 'Wikibase\\EntityContent' => $baseDir . '/extensions/Wikibase/repo/includes/content/EntityContent.php', - 'Wikibase\\EntityContentDiffView' => $baseDir . '/extensions/Wikibase/repo/includes/EntityContentDiffView.php', - 'Wikibase\\EntityDiffVisualizer' => $baseDir . '/extensions/Wikibase/repo/includes/EntityDiffVisualizer.php', 'Wikibase\\EntityFactory' => $baseDir . '/extensions/Wikibase/lib/includes/EntityFactory.php', 'Wikibase\\EntityIdPager' => $baseDir . '/extensions/Wikibase/repo/includes/store/EntityIdPager.php', 'Wikibase\\EntityParserOutputGenerator' => $baseDir . '/extensions/Wikibase/repo/includes/EntityParserOutputGenerator.php', @@ -659,6 +652,13 @@ 'Wikibase\\Repo\\Content\\EntityHandler' => $baseDir . '/extensions/Wikibase/repo/includes/content/EntityHandler.php', 'Wikibase\\Repo\\Content\\ItemHandler' => $baseDir . '/extensions/Wikibase/repo/includes/content/ItemHandler.php', 'Wikibase\\Repo\\Content\\PropertyHandler' => $baseDir . '/extensions/Wikibase/repo/includes/content/PropertyHandler.php', + 'Wikibase\\Repo\\Diff\\ClaimDiffer' => $baseDir . '/extensions/Wikibase/repo/includes/Diff/ClaimDiffer.php', + 'Wikibase\\Repo\\Diff\\ClaimDifference' => $baseDir . '/extensions/Wikibase/repo/includes/Diff/ClaimDifference.php', + 'Wikibase\\Repo\\Diff\\ClaimDifferenceVisualizer' => $baseDir . '/extensions/Wikibase/repo/includes/Diff/ClaimDifferenceVisualizer.php', + 'Wikibase\\Repo\\Diff\\DiffOpValueFormatter' => $baseDir . '/extensions/Wikibase/repo/includes/Diff/DiffOpValueFormatter.php', + 'Wikibase\\Repo\\Diff\\DiffView' => $baseDir . '/extensions/Wikibase/repo/includes/Diff/DiffView.php', + 'Wikibase\\Repo\\Diff\\EntityContentDiffView' => $baseDir . '/extensions/Wikibase/repo/includes/Diff/EntityContentDiffView.php', + 'Wikibase\\Repo\\Diff\\EntityDiffVisualizer' => $baseDir . '/extensions/Wikibase/repo/includes/Diff/EntityDiffVisualizer.php', 'Wikibase\\Repo\\EntitySearchTextGenerator' => $baseDir . '/extensions/Wikibase/repo/includes/EntitySearchTextGenerator.php', 'Wikibase\\Repo\\GenericEventDispatcher' => $baseDir . '/extensions/Wikibase/repo/includes/GenericEventDispatcher.php', 'Wikibase\\Repo\\Interactors\\ItemMergeException' => $baseDir . '/extensions/Wikibase/repo/includes/Interactors/ItemMergeException.php', @@ -814,9 +814,9 @@ 'Wikibase\\Test\\ChangesTableTest' => $baseDir . '/extensions/Wikibase/lib/tests/phpunit/ChangesTableTest.php', 'Wikibase\\Test\\ChunkCacheTest' => $baseDir . '/extensions/Wikibase/lib/tests/phpunit/store/ChunkCacheTest.php', 'Wikibase\\Test\\ClaimChangeOpFactoryTest' => $baseDir . '/extensions/Wikibase/repo/tests/phpunit/includes/ChangeOp/ClaimChangeOpFactoryTest.php', - 'Wikibase\\Test\\ClaimDifferTest' => $baseDir . '/extensions/Wikibase/repo/tests/phpunit/includes/ClaimDifferTest.php', - 'Wikibase\\Test\\ClaimDifferenceTest' => $baseDir . '/extensions/Wikibase/repo/tests/phpunit/includes/ClaimDifferenceTest.php', - 'Wikibase\\Test\\ClaimDifferenceVisualizerTest' => $baseDir . '/extensions/Wikibase/repo/tests/phpunit/includes/ClaimDifferenceVisualizerTest.php', + 'Wikibase\\Test\\ClaimDifferTest' => $baseDir . '/extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferTest.php', + 'Wikibase\\Test\\ClaimDifferenceTest' => $baseDir . '/extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferenceTest.php', + 'Wikibase\\Test\\ClaimDifferenceVisualizerTest' => $baseDir . '/extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferenceVisualizerTest.php', 'Wikibase\\Test\\ClaimHtmlGeneratorTest' => $baseDir . '/extensions/Wikibase/repo/tests/phpunit/includes/ClaimHtmlGeneratorTest.php', 'Wikibase\\Test\\ClaimSerializerTest' => $baseDir . '/extensions/Wikibase/lib/tests/phpunit/serializers/ClaimSerializerTest.php', 'Wikibase\\Test\\ClaimSummaryBuilderTest' => $baseDir . '/extensions/Wikibase/repo/tests/phpunit/includes/ClaimSummaryBuilderTest.php', @@ -826,8 +826,8 @@ 'Wikibase\\Test\\CopyrightMessageBuilderTest' => $baseDir . '/extensions/Wikibase/repo/tests/phpunit/includes/CopyrightMessageBuilderTest.php', 'Wikibase\\Test\\DescriptionSerializerTest' => $baseDir . '/extensions/Wikibase/lib/tests/phpunit/serializers/DescriptionSerializerTest.php', 'Wikibase\\Test\\DiffChangeTest' => $baseDir . '/extensions/Wikibase/lib/tests/phpunit/changes/DiffChangeTest.php', - 'Wikibase\\Test\\DiffOpValueFormatterTest' => $baseDir . '/extensions/Wikibase/repo/tests/phpunit/includes/DiffOpValueFormatterTest.php', - 'Wikibase\\Test\\DiffViewTest' => $baseDir . '/extensions/Wikibase/repo/tests/phpunit/includes/DiffViewTest.php', + 'Wikibase\\Test\\DiffOpValueFormatterTest' => $baseDir . '/extensions/Wikibase/repo/tests/phpunit/includes/Diff/DiffOpValueFormatterTest.php', + 'Wikibase\\Test\\DiffViewTest' => $baseDir . '/extensions/Wikibase/repo/tests/phpunit/includes/Diff/DiffViewTest.php', 'Wikibase\\Test\\DispatchingEntitySerializerTest' => $baseDir . '/extensions/Wikibase/lib/tests/phpunit/serializers/DispatchingEntitySerializerTest.php', 'Wikibase\\Test\\DispatchingExceptionLocalizerTest' => $baseDir . '/extensions/Wikibase/lib/tests/phpunit/Localizer/DispatchingExceptionLocalizerTest.php', 'Wikibase\\Test\\DummyPropertyInfoStoreTest' => $baseDir . '/extensions/Wikibase/lib/tests/phpunit/store/DummyPropertyInfoStoreTest.php', @@ -836,14 +836,14 @@ 'Wikibase\\Test\\EditEntityTest' => $baseDir . '/extensions/Wikibase/repo/tests/phpunit/includes/EditEntityTest.php', 'Wikibase\\Test\\EntityChangeTest' => $baseDir . '/extensions/Wikibase/lib/tests/phpunit/changes/EntityChangeTest.php', 'Wikibase\\Test\\EntityContentDiffTest' => $baseDir . '/extensions/Wikibase/repo/tests/phpunit/includes/content/EntityContentDiffTest.php', - 'Wikibase\\Test\\EntityContentDiffViewTest' => $baseDir . '/extensions/Wikibase/repo/tests/phpunit/includes/EntityContentDiffViewTest.php', + 'Wikibase\\Test\\EntityContentDiffViewTest' => $baseDir . '/extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityContentDiffViewTest.php', 'Wikibase\\Test\\EntityContentFactoryTest' => $baseDir . '/extensions/Wikibase/repo/tests/phpunit/includes/content/EntityContentFactoryTest.php', 'Wikibase\\Test\\EntityContentTest' => $baseDir . '/extensions/Wikibase/repo/tests/phpunit/includes/content/EntityContentTest.php', 'Wikibase\\Test\\EntityDataRequestHandlerTest' => $baseDir . '/extensions/Wikibase/repo/tests/phpunit/includes/LinkedData/EntityDataRequestHandlerTest.php', 'Wikibase\\Test\\EntityDataSerializationServiceTest' => $baseDir . '/extensions/Wikibase/repo/tests/phpunit/includes/LinkedData/EntityDataSerializationServiceTest.php', 'Wikibase\\Test\\EntityDataTestProvider' => $baseDir . '/extensions/Wikibase/repo/tests/phpunit/includes/LinkedData/EntityDataTestProvider.php', 'Wikibase\\Test\\EntityDataUriManagerTest' => $baseDir . '/extensions/Wikibase/repo/tests/phpunit/includes/LinkedData/EntityDataUriManagerTest.php', - 'Wikibase\\Test\\EntityDiffVisualizerTest' => $baseDir . '/extensions/Wikibase/repo/tests/phpunit/includes/EntityDiffVisualizerTest.php', + 'Wikibase\\Test\\EntityDiffVisualizerTest' => $baseDir . '/extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityDiffVisualizerTest.php', 'Wikibase\\Test\\EntityFactoryTest' => $baseDir . '/extensions/Wikibase/lib/tests/phpunit/entity/EntityFactoryTest.php', 'Wikibase\\Test\\EntityHandlerTest' => $baseDir . '/extensions/Wikibase/repo/tests/phpunit/includes/content/EntityHandlerTest.php', 'Wikibase\\Test\\EntityIdFormatterTest' => $baseDir . '/extensions/Wikibase/lib/tests/phpunit/formatters/EntityIdFormatterTest.php', diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index 5640ca1..2e30bb4 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInit6c4a97a82f7fd0042859bd522c880871 +class ComposerAutoloaderInit04843eff1b8cfffc9c804180fb5156df { private static $loader; @@ -19,9 +19,9 @@ return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInit6c4a97a82f7fd0042859bd522c880871', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit04843eff1b8cfffc9c804180fb5156df', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(); - spl_autoload_unregister(array('ComposerAutoloaderInit6c4a97a82f7fd0042859bd522c880871', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit04843eff1b8cfffc9c804180fb5156df', 'loadClassLoader')); $map = require __DIR__ . '/autoload_namespaces.php'; foreach ($map as $namespace => $path) { @@ -42,14 +42,14 @@ $includeFiles = require __DIR__ . '/autoload_files.php'; foreach ($includeFiles as $file) { - composerRequire6c4a97a82f7fd0042859bd522c880871($file); + composerRequire04843eff1b8cfffc9c804180fb5156df($file); } return $loader; } } -function composerRequire6c4a97a82f7fd0042859bd522c880871($file) +function composerRequire04843eff1b8cfffc9c804180fb5156df($file) { require $file; } diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 0ca4cf4..3d7e779 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -1180,12 +1180,12 @@ "source": { "type": "git", "url": "https://github.com/wikimedia/mediawiki-extensions-Wikibase.git", - "reference": "47597574720e4381dbf976ee01894e6b2ce44b8d" + "reference": "8d0aa67f8d26b392592c71b15bd3ff38edb00215" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/47597574720e4381dbf976ee01894e6b2ce44b8d", - "reference": "47597574720e4381dbf976ee01894e6b2ce44b8d", + "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/8d0aa67f8d26b392592c71b15bd3ff38edb00215", + "reference": "8d0aa67f8d26b392592c71b15bd3ff38edb00215", "shasum": "" }, "require": { @@ -1212,7 +1212,7 @@ "conflict": { "mediawiki/mediawiki": "<1.23" }, - "time": "2014-09-24 09:01:52", + "time": "2014-09-24 20:21:31", "type": "mediawiki-extension", "installation-source": "dist", "autoload": { -- To view, visit https://gerrit.wikimedia.org/r/162861 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iace825d93dcf461d54151d3c689c0cd8ed0fe145 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Wikidata Gerrit-Branch: master Gerrit-Owner: Aude <aude.w...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits