Line 1: |
Line 1: |
| + | const DATA_CONTROLLER_ITEM_ID = 96; // because Q96 is data controller" |
| + | const INSTANCE_OF_PROPERTY = 'claims.P3'; // because P3 is the property "instance of" |
| + | |
| + | function isDataController() { |
| + | let retVal = false; |
| + | if ( typeof mw.config.values.wbEntity != "undefined" ) // if we are on the page of a loaded entity |
| + | { |
| + | let obj = JSON.parse ( mw.config.values.wbEntity ); |
| + | if ( typeof check( obj, INSTANCE_OF_PROPERTY ) != "undefined" ) // if the entity has any "instance of" claim |
| + | { |
| + | for( var i = 0; i < dive( obj, INSTANCE_OF_PROPERTY ).length; i++ ) // retrieve each 'instance of' claim to check it |
| + | { |
| + | if( dive( dive( obj, INSTANCE_OF_PROPERTY)[i] , 'mainsnak.datavalue.value')['numeric-id'] === DATA_CONTROLLER_ITEM_ID ) |
| + | { |
| + | // it's a data controller |
| + | retVal = true; break; |
| + | } |
| + | } |
| + | } |
| + | } |
| + | return retVal; |
| + | } |
| + | |
| | | |
| console.log ("start of Alex's Access template"); | | console.log ("start of Alex's Access template"); |
− | var controller_item_id = 96;
| |
| | | |
− | var wbEStruct = { | + | // get the ID of the current page |
− | instanceOfRelations: 'claims.P3', // location of P3 relations in wbEntity
| + | var $title2 = $( '.wikibase-title' ); |
− | IDPropLoc: 'mainsnak.datavalue.value', // location of ID properties in related entity
| + | console.log($title2.find( '.wikibase-title-id' ).text()); |
− | IDName: 'numeric-id' // ID property name which checked
| + | var qId = $title2.find( '.wikibase-title-id' ).text().replace( /[()]/g, '' ); |
− | };
| + | console.log('qid is '+qId); |
| | | |
− | // check if we are on a page of a loaded Entity
| + | if (isDataController()) { |
− | if ( typeof mw.config.values.wbEntity != "undefined" ) {
| + | // make an API call to expand the letter template, using this item. |
− | // defined entity
| + | let api = new mw.Api(); |
− | // get wbEntity as json
| + | api.get( { |
− | var obj = JSON.parse ( mw.config.values.wbEntity );
| + | action: 'expandtemplates', |
− | // check if we have P3 relations and iterate through
| + | text: '{{User:Alexbfree/Template:GDPRMailtoAccess|qID='+qId+'}}' |
− | if ( typeof check( obj, wbEStruct["instanceOfRelations"] ) != "undefined" ) {
| + | } ) |
− | // checking each relation
| + | .done( function ( data ) { |
− | for( var i = 0; i < dive( obj, wbEStruct["instanceOfRelations"] ).length; i++ ) {
| + | var expanded = $(data.expandtemplates["*"]) |
− | // check if we have controller id constructed from wbEntity
| + | mw.notify( expanded , { autoHide: false } ); // pop up the notification with the link |
− | if( dive( dive( obj, wbEStruct["instanceOfRelations"])[i] , wbEStruct["IDPropLoc"])[wbEStruct["IDName"]] === controller_item_id ) {
| + | } ); |
− | // it's a data controller
| |
− | console.log('got data controller:');
| |
− | console.dir(obj);
| |
− | console.log('diving gives:');
| |
− | console.dir(dive( obj, wbEStruct["instanceOfRelations"]));
| |
− | var $title2 = $( '.wikibase-title' ),
| |
− | qId = $title2.find( '.wikibase-title-id' ).text().replace( /[()]/g, '' );
| |
− | console.log('qid is '+qId);
| |
− | var api = new mw.Api();
| |
− | api.get( {
| |
− | action: 'expandtemplates',
| |
− | text: '{{User:Alexbfree/Template:GDPRMailtoAccess|qID='+qId+'}}'
| |
− | } ).done( function ( data ) {
| |
− | var expanded = $(data.expandtemplates["*"])
| |
− | console.log ('alex API call returned '+typeof expanded+':');
| |
− | console.dir(expanded)
| |
− | //mw.notify( expanded , { autoHide: false } );
| |
− | } );
| |
− | }
| |
− | }
| |
− | }
| |
− | // Else let's do nothing;
| |
| } | | } |
| + | // otherwise, we don't need to do anything |
| | | |
| console.log ("end of Alex's Access template"); | | console.log ("end of Alex's Access template"); |