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

Reply via email to