Henning Snater has uploaded a new change for review.
https://gerrit.wikimedia.org/r/89007
Change subject: Implemented referenceview movetoolbar definition
......................................................................
Implemented referenceview movetoolbar definition
This allows moving/ordering references.
Change-Id: Ibe09729491c9fc79a974498e66115b86f8d15a3c
---
M lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js
M lib/resources/jquery.wikibase/jquery.wikibase.statementview.js
M repo/resources/wikibase.ui.entityViewInit.js
3 files changed, 106 insertions(+), 3 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase
refs/changes/07/89007/1
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js
b/lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js
index fb486e7..6a59d27 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js
@@ -754,8 +754,14 @@
},
'movetoolbarup movetoolbardown': function( event ) {
var $snakview = $( event.target ),
- $snaklistview = $snakview.closest(
':wikibase-snaklistview' ),
- $referenceview = $snaklistview.closest(
':wikibase-referenceview' ),
+ $snaklistview = $snakview.closest(
':wikibase-snaklistview' );
+
+ if( !$snaklistview.length ) {
+ // Event belongs to another movetoolbar.
+ return;
+ }
+
+ var $referenceview = $snaklistview.closest(
':wikibase-referenceview' ),
referenceview = $referenceview.data(
'referenceview' ),
snaklistview =
referenceview.options.listItemAdapter.liInstance( $snaklistview ),
snakview =
snaklistview._listview.listItemAdapter().liInstance( $snakview ),
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.statementview.js
b/lib/resources/jquery.wikibase/jquery.wikibase.statementview.js
index 9c571ca..8a324a8 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.statementview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.statementview.js
@@ -347,4 +347,97 @@
}
} );
+$.wikibase.toolbarcontroller.definition( 'movetoolbar', {
+ id: 'statementview-referenceview',
+ selector: '.wb-referenceview',
+ events: {
+ 'referenceviewstartediting': function( event ) {
+ // Initialize movetoolbar.
+
+ var $referenceview = $( event.target ),
+ referenceview = $referenceview.data(
'referenceview' ),
+ $statementview = $referenceview.closest(
':wikibase-statementview' ),
+ statementview = $statementview.data(
'statementview' ),
+ referencesListview =
statementview.$references.data( 'listview' );
+
+ if( !referenceview.value() ) {
+ // Prevent creating the toolbar for pending
values.
+ return;
+ }
+
+ $referenceview.movetoolbar();
+
+ // Disable "move up" button of topmost and "move down"
button of bottommost
+ // referenceview:
+ var $topMostReferenceview =
referencesListview.items().first();
+ var $bottomMostReferenceview =
referencesListview.items().last();
+
+ if ( $topMostReferenceview.get( 0 ) ===
$referenceview.get( 0 ) ) {
+ $referenceview.data( 'movetoolbar'
).$btnMoveUp.data( 'toolbarbutton' ).disable();
+ }
+
+ if( $bottomMostReferenceview.get( 0 ) ===
$referenceview.get( 0 ) ) {
+ $referenceview.data( 'movetoolbar'
).$btnMoveDown.data( 'toolbarbutton' ).disable();
+ }
+ },
+ 'referenceviewafterstopediting': function( event ) {
+ // Destroy movetoolbar.
+
+ var $referenceview = $( event.target ),
+ referenceview = $referenceview.data(
'referenceview' );
+
+ if( !referenceview ) {
+ // Stopped edit mode of a pending referenceview
which does not feature a
+ // movetoolbar.
+ return;
+ }
+
+ $referenceview.data( 'movetoolbar' ).destroy();
+ },
+ 'movetoolbarup movetoolbardown': function( event ) {
+ var $referenceview = $( event.target ),
+ referenceview = $referenceview.data(
'referenceview' );
+
+ if( !referenceview ) {
+ // Not the event of the corresponding toolbar
but of some other movetoolbar.
+ return;
+ }
+
+ var $statementview = $referenceview.closest(
':wikibase-statementview' ),
+ statementview = $statementview.data(
'statementview' ),
+ referencesListview =
statementview.$references.data( 'listview' ),
+ action = ( event.type === 'movetoolbarup' ) ?
'moveUp' : 'moveDown';
+
+ if( action === 'moveUp' && referencesListview.indexOf(
$referenceview ) !== 0 ) {
+ referencesListview.moveUp( $referenceview );
+ } else if( action === 'moveDown' &&
referencesListview.indexOf( $referenceview ) !== referencesListview.length - 1
) {
+ referencesListview.moveDown( $referenceview );
+ }
+
+ // Disable "move up" button of topmost and "move down"
button of bottommost
+ // referenceview:
+ var $btnMoveUp = $referenceview.data( 'movetoolbar'
).$btnMoveUp,
+ btnMoveUp = $btnMoveUp.data( 'toolbarbutton' ),
+ $btnMoveDown = $referenceview.data(
'movetoolbar' ).$btnMoveDown,
+ btnMoveDown = $btnMoveDown.data(
'toolbarbutton' ),
+ $topmostReferenceview =
referencesListview.items().first(),
+ isTopmost = $topmostReferenceview.get( 0 ) ===
$referenceview.get( 0 ),
+ $bottommostReferenceview =
referencesListview.items().last(),
+ isBottommost = $bottommostReferenceview.get( 0
) === $referenceview.get( 0 );
+
+ btnMoveUp[( isTopmost ) ? 'disable' : 'enable' ]();
+ btnMoveDown[( isBottommost ) ? 'disable' : 'enable' ]();
+
+ // Update referenceview indices:
+ var $referenceviews = referencesListview.items(),
+ referenceListviewLia =
referencesListview.listItemAdapter();
+
+ for( var i = 0; i < $referenceviews.length; i++ ) {
+ referenceview =
referenceListviewLia.liInstance( $referenceviews.eq( i ) );
+ referenceview.option( 'index', i );
+ }
+ }
+ }
+} );
+
}( mediaWiki, wikibase, jQuery ) );
diff --git a/repo/resources/wikibase.ui.entityViewInit.js
b/repo/resources/wikibase.ui.entityViewInit.js
index b223008..e37bd36 100644
--- a/repo/resources/wikibase.ui.entityViewInit.js
+++ b/repo/resources/wikibase.ui.entityViewInit.js
@@ -151,7 +151,11 @@
};
if( mw.config.get( 'wbExperimentalFeatures' ) ) {
- toolbarControllerConfig.movetoolbar =
['claim-qualifiers-snak', 'referenceview-snakview'];
+ toolbarControllerConfig.movetoolbar = [
+ 'claim-qualifiers-snak',
+ 'statementview-referenceview',
+ 'referenceview-snakview'
+ ];
}
$( '.wb-entity' )
--
To view, visit https://gerrit.wikimedia.org/r/89007
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ibe09729491c9fc79a974498e66115b86f8d15a3c
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Henning Snater <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits