[MediaWiki-commits] [Gerrit] Introduce LabelsChanger - change (mediawiki...Wikibase)
Thiemo Mättig (WMDE) has submitted this change and it was merged. Change subject: Introduce LabelsChanger .. Introduce LabelsChanger Change-Id: Ibf2cf0b69b97041020f13e311d8b4132691bbd16 --- M lib/resources/entityChangers/EntityChangersFactory.js A lib/resources/entityChangers/LabelsChanger.js M lib/resources/entityChangers/resources.php M lib/resources/jquery.wikibase/jquery.wikibase.entityview.js M lib/resources/jquery.wikibase/jquery.wikibase.fingerprintgroupview.js M lib/resources/jquery.wikibase/jquery.wikibase.fingerprintlistview.js M lib/resources/jquery.wikibase/jquery.wikibase.fingerprintview.js M lib/resources/jquery.wikibase/jquery.wikibase.labelview.js M lib/resources/jquery.wikibase/resources.php A lib/tests/qunit/entityChangers/LabelsChanger.tests.js M lib/tests/qunit/entityChangers/resources.php M lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintgroupview.tests.js M lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintlistview.tests.js M lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintview.tests.js M lib/tests/qunit/jquery.wikibase/jquery.wikibase.labelview.tests.js 15 files changed, 231 insertions(+), 54 deletions(-) Approvals: Thiemo Mättig (WMDE): Looks good to me, approved jenkins-bot: Verified diff --git a/lib/resources/entityChangers/EntityChangersFactory.js b/lib/resources/entityChangers/EntityChangersFactory.js index 5a8554e..29b7cdd 100644 --- a/lib/resources/entityChangers/EntityChangersFactory.js +++ b/lib/resources/entityChangers/EntityChangersFactory.js @@ -59,6 +59,13 @@ }, /** +* @return {wikibase.entityChangers.LabelsChanger} +*/ + getLabelsChanger: function() { + return new MODULE.LabelsChanger( this._api, this._revisionStore, this._entity ); + }, + + /** * @return {wikibase.entityChangers.ReferencesChanger} */ getReferencesChanger: function() { diff --git a/lib/resources/entityChangers/LabelsChanger.js b/lib/resources/entityChangers/LabelsChanger.js new file mode 100644 index 000..f044897 --- /dev/null +++ b/lib/resources/entityChangers/LabelsChanger.js @@ -0,0 +1,74 @@ +/** + * @licence GNU GPL v2+ + * @author Adrian Lang adrian.l...@wikimedia.de + */ +( function( wb, $ ) { + 'use strict'; + + var MODULE = wb.entityChangers; + /** +* @param {wikibase.RepoApi} +* @param {wikibase.RevisionStore} +* @param {wikibase.datamodel.Entity} +*/ + var SELF = MODULE.LabelsChanger = function( api, revisionStore, entity ) { + this._api = api; + this._revisionStore = revisionStore; + this._entity = entity; + }; + + $.extend( SELF.prototype, { + /** +* @type {wikibase.datamodel.Entity} +*/ + _entity: null, + + /** +* @type {wikibase.RevisionStore} +*/ + _revisionStore: null, + + /** +* @type {wikibase.RepoApi} +*/ + _api: null, + + /** +* @param {string} label +* @param {string} language +* @return {jQuery.Promise} +* Resolved parameters: +* - {string} The saved label +* Rejected parameters: +* - {wikibase.RepoApiError} +*/ + setLabel: function( label, language ) { + var self = this; + var deferred = $.Deferred(); + + this._api.setLabel( + this._entity.getId(), + this._revisionStore.getLabelRevision(), + label, + language + ) + .done( function( result ) { + var savedLabel = result.entity.labels[language].value; + + // Update revision store: + self._revisionStore.setLabelRevision( result.entity.lastrevid ); + + // FIXME: Maybe check API's return value? + + // FIXME: Introduce Item.setLabels + + deferred.resolve( savedLabel ); + } ) + .fail( function( errorCode, error ) { + deferred.reject( wb.RepoApiError.newFromApiResponse( error, 'save' ) ); + } ); + + return deferred.promise(); + } + } ); +} ( wikibase, jQuery ) ); diff --git a/lib/resources/entityChangers/resources.php b/lib/resources/entityChangers/resources.php index abbe2ec..fde4c58 100644 ---
[MediaWiki-commits] [Gerrit] Introduce LabelsChanger - change (mediawiki...Wikibase)
Adrian Lang has uploaded a new change for review. https://gerrit.wikimedia.org/r/166017 Change subject: Introduce LabelsChanger .. Introduce LabelsChanger Change-Id: Ibf2cf0b69b97041020f13e311d8b4132691bbd16 --- M lib/resources/entityChangers/EntityChangersFactory.js A lib/resources/entityChangers/LabelsChanger.js M lib/resources/entityChangers/resources.php M lib/resources/jquery.wikibase/jquery.wikibase.entityview.js M lib/resources/jquery.wikibase/jquery.wikibase.fingerprintgroupview.js M lib/resources/jquery.wikibase/jquery.wikibase.fingerprintlistview.js M lib/resources/jquery.wikibase/jquery.wikibase.fingerprintview.js M lib/resources/jquery.wikibase/jquery.wikibase.labelview.js M lib/resources/jquery.wikibase/resources.php A lib/tests/qunit/entityChangers/LabelsChanger.tests.js M lib/tests/qunit/entityChangers/resources.php M lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintgroupview.tests.js M lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintlistview.tests.js M lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintview.tests.js M lib/tests/qunit/jquery.wikibase/jquery.wikibase.labelview.tests.js 15 files changed, 233 insertions(+), 54 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase refs/changes/17/166017/1 diff --git a/lib/resources/entityChangers/EntityChangersFactory.js b/lib/resources/entityChangers/EntityChangersFactory.js index 86c9876..c4b660e 100644 --- a/lib/resources/entityChangers/EntityChangersFactory.js +++ b/lib/resources/entityChangers/EntityChangersFactory.js @@ -56,6 +56,13 @@ }, /** +* @return {wikibase.entityChangers.LabelsChanger} +*/ + getLabelsChanger: function() { + return new MODULE.LabelsChanger( this._api, this._revisionStore, this._entity ); + }, + + /** * @return {wikibase.entityChangers.ReferencesChanger} */ getReferencesChanger: function() { diff --git a/lib/resources/entityChangers/LabelsChanger.js b/lib/resources/entityChangers/LabelsChanger.js new file mode 100644 index 000..f044897 --- /dev/null +++ b/lib/resources/entityChangers/LabelsChanger.js @@ -0,0 +1,74 @@ +/** + * @licence GNU GPL v2+ + * @author Adrian Lang adrian.l...@wikimedia.de + */ +( function( wb, $ ) { + 'use strict'; + + var MODULE = wb.entityChangers; + /** +* @param {wikibase.RepoApi} +* @param {wikibase.RevisionStore} +* @param {wikibase.datamodel.Entity} +*/ + var SELF = MODULE.LabelsChanger = function( api, revisionStore, entity ) { + this._api = api; + this._revisionStore = revisionStore; + this._entity = entity; + }; + + $.extend( SELF.prototype, { + /** +* @type {wikibase.datamodel.Entity} +*/ + _entity: null, + + /** +* @type {wikibase.RevisionStore} +*/ + _revisionStore: null, + + /** +* @type {wikibase.RepoApi} +*/ + _api: null, + + /** +* @param {string} label +* @param {string} language +* @return {jQuery.Promise} +* Resolved parameters: +* - {string} The saved label +* Rejected parameters: +* - {wikibase.RepoApiError} +*/ + setLabel: function( label, language ) { + var self = this; + var deferred = $.Deferred(); + + this._api.setLabel( + this._entity.getId(), + this._revisionStore.getLabelRevision(), + label, + language + ) + .done( function( result ) { + var savedLabel = result.entity.labels[language].value; + + // Update revision store: + self._revisionStore.setLabelRevision( result.entity.lastrevid ); + + // FIXME: Maybe check API's return value? + + // FIXME: Introduce Item.setLabels + + deferred.resolve( savedLabel ); + } ) + .fail( function( errorCode, error ) { + deferred.reject( wb.RepoApiError.newFromApiResponse( error, 'save' ) ); + } ); + + return deferred.promise(); + } + } ); +} ( wikibase, jQuery ) ); diff --git