Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F29774118
raw.txt
No One
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Authored By
Ladsgroup
Jul 15 2019, 10:35 AM
2019-07-15 10:35:23 (UTC+0)
Size
8 KB
Referenced Files
None
Subscribers
None
raw.txt
View Options
/**
* @see [[Wikidata:Tours/Qualifiers]]
*
* @author Bene*
*/
mw.loader.using(['ext.guidedTour', 'ext.guidedTour.launcher']).done( function() {
$.ajax( {
async: false,
url: mw.util.wikiScript() + '?title=MediaWiki:JQuery.overlay.js&action=raw&ctype=text/javascript',
dataType: 'script'
} );
( function( $, mw, gt, wb ) {
mw.util.addCSS(
'.tipsy { z-index: 100000006; } /* tipsy should stay visible */ \
.ui-suggester-list.ui-ooMenu { z-index: 1000000061; } /* suggestions should stay visible */ \
#mw-spinner-guidedtour { position: absolute; height: 100%; background-color: rgba(0, 0, 0, 0.1); z-index: 1000000; } /* the spinner */ \
#bodyContent { z-index: auto; } /* Ugly hack to make the overlay work again */'
);
var defaultStep = {
overlay: false,
closeOnClickOutside: false,
position: 'bottom', // only when attached
actionBtn: '.wikibase-toolbar-button-edit, .wikibase-toolbar-button-save'
};
/**
* Shows a spinner covering the whole page.
*/
function showSpinner() {
$( 'body' ).css( 'overflow', 'hidden' );
mw.loader.using( [ 'jquery.spinner' ], function() {
$.createSpinner( { size: 'large', type: 'block', id: 'guidedtour' } ).prependTo( 'body' );
} );
}
/**
* Removes the data from the current entity and adds the new data.
* When finished reloads the site with data=ok.
*
* @param {string} tourName
* @param {object} newData
*/
function removeData( tourName, newData ) {
mw.loader.using( 'mediawiki.api', function() {
new mw.Api()
.postWithEditToken( {
action: 'wbeditentity',
id: mw.config.get( 'wbEntityId' ),
clear: true,
data: JSON.stringify( newData ),
summary: 'Clearing data for [[Wikidata:Tours#' + tourName + '|' + tourName + ']] tour'
} )
.done( function() {
location.href += '&data=ok';
} );
} );
}
/**
* Parses the given page and returns the sections used for the single steps of the tour.
*
* @param {string} pageName
* @param {string} language
* @return {array}
*/
function getSections( pageName, language ) {
var data = JSON.parse( $.ajax( {
dataType: 'json',
url: '//www.wikidata.org/w/api.php', // this is ugly but necessary if we want to execute the tour on testwikidata
data: {
'action': 'parse',
'format': 'json',
'page': pageName + ( language === 'en' ? '' : '/' + language ),
'prop': 'text|sections',
'disablepp': true,
'disabletoc': true
},
async: false
} ).responseText );
if ( data.error ) {
if ( language !== 'en' ) {
location.href += '&uselang=en';
} else {
alert( data.error );
return false;
}
}
var rawSections = data.parse.text['*'].split( /<h2[^>]*>((?!<\/h2>).)*<\/h2>/gi ),
titles = data.parse.sections,
sections = [];
for ( var i = 0; i < titles.length; i++ ) {
sections.push( {
title: titles[i].line,
description: rawSections[i * 2 + 2]
} );
}
return sections;
}
/**
* Builds the tour's options with steps parsed form the given page.
*
* @param {string} tourName
* @param {string} tourEntityId
* @param {object} options
*
* @return {object}
*/
function buildOptionsFromPage( tourName, tourEntityId, options ) {
var language = mw.config.get( 'wgUserLanguage' ),
sections = getSections( options.pageName, language );
$.extend( options, {
name: tourName,
shouldLog: true
} );
$.each( sections, function( i ) {
var step = options.steps[i],
_onShow = step.onShow;
step = options.steps[i] = $.extend( {}, defaultStep, step, sections[i] );
$.extend( options.steps[i], {
onShow: function() {
if ( typeof _onShow === 'function' ) {
_onShow();
}
if ( step.actionBtn ) {
$( step.actionBtn ).off( 'click.guidedtour' ).one( 'click.guidedtour', function( e ) {
// continue when this button has been clicked
e.stopPropagation();
mw.libs.guiders.next();
} );
}
if ( step.overlay ) {
$( step.overlay ).overlay();
} else {
$.overlay.remove();
}
}
} );
// change the defaults for the end of the tour
if ( i === sections.length - 1 ) {
$.extend( options.steps[i], {
overlay: false,
closeOnClickOutside: true,
buttons: [ { action: 'end' } ]
} );
}
} );
if ( location.href.indexOf( 'uselang=en' ) > -1 ) {
options.steps.unshift( $.extend( {}, defaultStep, {
title: 'Not your language',
description: 'This tour is not available in your language. You may proceed using English or ' +
'<a href="' + mw.util.getUrl( options.pageName ) + '">translate it into your language</a>.'
} ) );
}
return options;
}
/**
* Defines the tour with the given options using the TourBuilder.
*
* @param {object} options
*/
function defineTour( options ) {
var tour = new gt.TourBuilder( {
name: options.name,
shouldLog: true
} );
tour.firstStep( $.extend( {
name: 'step0'
}, options.steps[0] ) ).next( 'step1' );
for ( var i = 1; i < options.steps.length - 1; i++ ) {
tour.step( $.extend( {
name: 'step' + i
}, options.steps[i] ) ).next( 'step' + ( i + 1 ) ).back( 'step' + ( i - 1 ) );
}
tour.step( $.extend( {
name: 'step' + ( options.steps.length - 1 )
}, options.steps[options.steps.length - 1] ) ).back( 'step' + ( options.steps.length - 2 ) );
}
/**
* Checks if the tour name and entity id are correct. Also checks if the data
* has been prepared and clears or adds missing data. If everything is ok,
* starts the tour.
*/
gt.init = function( tourName, tourEntityId, newData, options ) {
// check for the correct page
if ( !wb || location.href.indexOf( 'tour=' + tourName ) < 0 ||
mw.config.get( 'wbEntityId' ) !== tourEntityId || mw.config.get( 'wbIsEditView' ) !== true
) {
return;
}
// check for emptiness
if ( !gt.hasQuery( { 'data' : 'ok' } ) ) {
showSpinner();
removeData( tourName, newData );
return;
}
// launch the tour
defineTour( buildOptionsFromPage( tourName, tourEntityId, options ) );
};
} )( jQuery, mediaWiki, mediaWiki.guidedTour, wikibase );
( function( $, mw, gt, wb ) {
var tourName = 'wbqualifiers',
tourEntityId = 'Q1027',
newData = {
"claims": [ {
"mainsnak": {
"snaktype": "value",
"property": "P610",
"datavalue": {
"value": {
"entity-type": "item",
"numeric-id": 513
},
"type": "wikibase-entityid"
}
},
"type": "statement",
"rank": "normal"
}, {
"mainsnak": {
"snaktype": "value",
"property": "P1082",
"datavalue": {
"value": {
"amount": "+7000000000",
"unit": "1",
"upperBound": "+7000000001",
"lowerBound": "+6999999999"
},
"type": "quantity"
}
},
"type": "statement",
"rank": "normal"
} ]
};
gt.init( tourName, tourEntityId, newData, {
/**
* The page from where the tour texts should be loaded.
*/
pageName: 'Wikidata:Tours/References',
/**
* The steps of the tour.
*/
steps: [ {
// Welcome to Tour 3
}, {
// Statements
attachTo: '.wb-claims .wb-claimlistview:eq(1)',
overlay: '.wb-claims .wb-claimlistview:eq(1)'
}, {
// References (1)
attachTo: '.wb-claims .wb-claimlistview:eq(1)',
overlay: '.wb-claims .wb-claimlistview:eq(1)'
}, {
// References (2)
attachTo: '.wb-claims .wb-claimlistview:eq(1)',
overlay: '.wb-claims .wb-claimlistview:eq(1)'
}, {
// References (3)
attachTo: '.wb-claims .wb-claimlistview:eq(1)',
overlay: '.wb-claims .wb-claimlistview:eq(1)'
}, {
// More on references
}, {
// Creating a reference (1)
actionBtn: '.wb-claims .wb-statement-references:eq(1) .wb-addtoolbar-addbutton',
attachTo: '.wb-claims .wb-statement-references:eq(1) .wb-addtoolbar-addbutton',
overlay: '.wb-claims .wb-claimlistview:eq(1)'
}, {
// Creating a reference (2)
// @todo
overlay: '.wb-referenceview-new'
}, {
// Creating a reference (3)
// @todo
overlay: '.wb-referenceview-new'
}, {
// Editing a reference (1)
// @todo
}, {
// Editing a reference (2)
// @todo
}, {
// Editing a reference (3)
// @todo
}, {
// Editing a reference (4)
// @todo
}, {
// Congratulations!
} ]
} );
} )( jQuery, mediaWiki, mediaWiki.guidedTour, wikibase );
}).fail( function (e) { console.log(e)});
File Metadata
Details
Attached
Mime Type
text/plain; charset=utf-8
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
7737127
Default Alt Text
raw.txt (8 KB)
Attached To
Mode
P8745 (An Untitled Masterwork)
Attached
Detach File
Event Timeline
Log In to Comment