| Line 18: |
Line 18: |
| | } | | } |
| | | | |
| − | function isDataController() { | + | mw.hook( 'wikibase.entityPage.entityLoaded' ).add( function ( entity ) { |
| | + | 'use strict'; |
| | + | |
| | + | // get the ID of the current page |
| | + | var pageID = document.querySelector('.wikibase-title .wikibase-title-id').innerText.replace( /[()]/g, '' ); |
| | + | //console.log(pageID); |
| | + | |
| | + | if (isDataController(entity)) { |
| | + | generateGDPRLink(pageID); |
| | + | } |
| | + | }); |
| | + | |
| | + | function isDataController(entity) { |
| | let foundThatThisIsAnInstanceOfDataController = false; | | let foundThatThisIsAnInstanceOfDataController = false; |
| − | if ( typeof mw.config.values.wbEntity != "undefined" ) // if we are on the page of a loaded entity | + | |
| | + | if ( typeof entity != "undefined" ) // if we are on the page of a loaded entity |
| | { | | { |
| − | console.dir(obj);
| + | if ( typeof check( entity, INSTANCE_OF_PROPERTY ) != "undefined" ) // if the entity has any "instance of" claim |
| − | let obj = JSON.parse ( mw.config.values.wbEntity );
| + | { |
| − | if ( typeof check( obj, INSTANCE_OF_PROPERTY ) != "undefined" ) // if the entity has any "instance of" claim
| + | let claims = dive( entity, INSTANCE_OF_PROPERTY ); // get the claims which use the "instance of" property |
| | + | if (claims.some(claimUsesDataControllerAsItsObject)) |
| | { | | { |
| − | let claims = dive( obj, INSTANCE_OF_PROPERTY ); // get the claims which use the "instance of" property
| + | foundThatThisIsAnInstanceOfDataController = true; |
| − | if (claims.some(claimUsesDataControllerAsItsObject))
| |
| − | {
| |
| − | foundThatThisIsAnInstanceOfDataController = true;
| |
| − | }
| |
| | } | | } |
| | + | } |
| | } | | } |
| | return foundThatThisIsAnInstanceOfDataController; | | return foundThatThisIsAnInstanceOfDataController; |
| | } | | } |
| | | | |
| − | // get the ID of the current page
| + | function dive(array, read){ |
| − | var pageID = document.querySelector('.wikibase-title .wikibase-title-id').innerText.replace( /[()]/g, '' );
| + | return read.split('.').reduce(indexinterpolate, array); |
| − | console.log(pageID);
| + | } |
| | | | |
| − | if (isDataController()) {
| + | function check(array, read){ |
| − | console.log('is dc');
| + | return read.split('.').reduce(indexcheck, array); |
| − | generateGDPRLink(pageID);
| |
| | } | | } |