jenkins-bot has submitted this change and it was merged.

Change subject: Hygiene: Create WikiDataApi
......................................................................


Hygiene: Create WikiDataApi

Change-Id: I43077ee1e783a6eb7644bac041657fb9534d6e2f
---
M includes/Resources.php
A javascripts/modules/wikigrok/WikiDataApi.js
M javascripts/modules/wikigrok/WikiGrokDialog.js
3 files changed, 53 insertions(+), 29 deletions(-)

Approvals:
  MaxSem: Looks good to me, approved
  Jdlrobson: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/includes/Resources.php b/includes/Resources.php
index de899cc..b9437ec 100644
--- a/includes/Resources.php
+++ b/includes/Resources.php
@@ -902,6 +902,7 @@
                        'modules/wikigrok/WikiGrokMoreInfo.hogan',
                ),
                'scripts' => array(
+                       'javascripts/modules/wikigrok/WikiDataApi.js',
                        'javascripts/modules/wikigrok/WikiGrokDialog.js',
                        'javascripts/modules/wikigrok/WikiGrokMoreInfo.js',
                        'javascripts/modules/wikigrok/wikigrokeval.js',
diff --git a/javascripts/modules/wikigrok/WikiDataApi.js 
b/javascripts/modules/wikigrok/WikiDataApi.js
new file mode 100644
index 0000000..18280b0
--- /dev/null
+++ b/javascripts/modules/wikigrok/WikiDataApi.js
@@ -0,0 +1,28 @@
+( function( M ) {
+       var Api = M.require( 'api' ).Api, WikiDataApi;
+       /**
+        * @class EditorApi
+        * @extends Api
+        */
+       WikiDataApi = Api.extend( {
+               apiUrl: 'https://www.wikidata.org/w/api.php',
+
+               initialize: function() {
+                       Api.prototype.initialize.apply( this, arguments );
+               },
+               getOccupations: function( occupationId ) {
+                       return this.ajax( {
+                                       action: 'wbgetentities',
+                                       props: 'labels',
+                                       ids: occupationId
+                               },
+                               {
+                                       url: this.apiUrl,
+                                       dataType: 'jsonp'
+                               } );
+               }
+       } );
+
+       M.define( 'modules/wikigrok/WikiDataApi', WikiDataApi );
+
+}( mw.mobileFrontend ) );
diff --git a/javascripts/modules/wikigrok/WikiGrokDialog.js 
b/javascripts/modules/wikigrok/WikiGrokDialog.js
index e082760..cadf2e4 100644
--- a/javascripts/modules/wikigrok/WikiGrokDialog.js
+++ b/javascripts/modules/wikigrok/WikiGrokDialog.js
@@ -2,6 +2,7 @@
        M.assertMode( [ 'beta', 'alpha' ] );
 
        var Panel = M.require( 'Panel' ),
+               WikiDataApi = M.require( 'modules/wikigrok/WikiDataApi' ),
                schema = M.require( 'loggingSchemas/mobileWebWikiGrok' ),
                WikiGrokDialog;
 
@@ -32,6 +33,11 @@
                        noticeMsg: '<a class="wg-notice-link" 
href="#/wikigrok/about">Tell me more</a>'
                },
                template: M.template.get( 
'modules/wikigrok/WikiGrokDialog.hogan' ),
+
+               initialize: function() {
+                       this.apiWikiData = new WikiDataApi();
+                       Panel.prototype.initialize.apply( this, arguments );
+               },
 
                log: function( action ) {
                        var data = {
@@ -69,36 +75,25 @@
                                                options.name = mw.config.get( 
'wgTitle' ).replace( / \(.+\)$/, '' );
 
                                                // Get the name of the 
occupation from Wikidata.
-                                               $.ajax( {
-                                                       type: 'get',
-                                                       url: 
'https://www.wikidata.org/w/api.php',
-                                                       data: {
-                                                               'action': 
'wbgetentities',
-                                                               'props': 
'labels',
-                                                               'ids': 
options.occupationId,
-                                                               'format': 'json'
-                                                       },
-                                                       dataType: 'jsonp',
-                                                       success: function( data 
) {
-                                                               var vowels = [ 
'a', 'e', 'i', 'o', 'u' ];
-                                                               if ( 
data.entities[options.occupationId].labels.en.value !== undefined ) {
-                                                                       // 
Re-render with new content for 'Question' step
-                                                                       
options.beginQuestions = true;
-                                                                       
options.occupation = data.entities[options.occupationId].labels.en.value;
-                                                                       // Hack 
for English prototype
-                                                                       if ( 
$.inArray( options.occupation.charAt(0), vowels ) === -1 ) {
-                                                                               
options.contentMsg = 'Was ' + options.name + ' a ' + options.occupation + '?';
-                                                                       } else {
-                                                                               
options.contentMsg = 'Was ' + options.name + ' an ' + options.occupation + '?';
-                                                                       }
-                                                                       
options.buttons = [
-                                                                               
{ classes: 'yes inline mw-ui-button mw-ui-progressive', label: 'Yes' },
-                                                                               
{ classes: 'not-sure inline mw-ui-button', label: 'Not Sure' },
-                                                                               
{ classes: 'no inline mw-ui-button mw-ui-progressive', label: 'No' }
-                                                                       ];
-                                                                       
options.noticeMsg = 'All submissions are <a class="wg-notice-link" 
href="#/wikigrok/about">released freely</a>';
-                                                                       
self.render( options );
+                                               
self.apiWikiData.getOccupations( options.occupationId ).done( function( data ) {
+                                                       var vowels = [ 'a', 
'e', 'i', 'o', 'u' ];
+                                                       if ( 
data.entities[options.occupationId].labels.en.value !== undefined ) {
+                                                               // Re-render 
with new content for 'Question' step
+                                                               
options.beginQuestions = true;
+                                                               
options.occupation = data.entities[options.occupationId].labels.en.value;
+                                                               // Hack for 
English prototype
+                                                               if ( $.inArray( 
options.occupation.charAt(0), vowels ) === -1 ) {
+                                                                       
options.contentMsg = 'Was ' + options.name + ' a ' + options.occupation + '?';
+                                                               } else {
+                                                                       
options.contentMsg = 'Was ' + options.name + ' an ' + options.occupation + '?';
                                                                }
+                                                               options.buttons 
= [
+                                                                       { 
classes: 'yes inline mw-ui-button mw-ui-progressive', label: 'Yes' },
+                                                                       { 
classes: 'not-sure inline mw-ui-button', label: 'Not Sure' },
+                                                                       { 
classes: 'no inline mw-ui-button mw-ui-progressive', label: 'No' }
+                                                               ];
+                                                               
options.noticeMsg = 'All submissions are <a class="wg-notice-link" 
href="#/wikigrok/about">released freely</a>';
+                                                               self.render( 
options );
                                                        }
                                                } );
                                        }

-- 
To view, visit https://gerrit.wikimedia.org/r/162131
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I43077ee1e783a6eb7644bac041657fb9534d6e2f
Gerrit-PatchSet: 4
Gerrit-Project: mediawiki/extensions/MobileFrontend
Gerrit-Branch: master
Gerrit-Owner: Jdlrobson <[email protected]>
Gerrit-Reviewer: Awjrichards <[email protected]>
Gerrit-Reviewer: JGonera <[email protected]>
Gerrit-Reviewer: Jdlrobson <[email protected]>
Gerrit-Reviewer: MaxSem <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to