[MediaWiki-commits] [Gerrit] Registered movetoolbar definition for references - change (mediawiki...Wikibase)
jenkins-bot has submitted this change and it was merged. Change subject: Registered movetoolbar definition for references .. Registered movetoolbar definition for references Change-Id: I1922294f6dac0de6878a6e9c5f3c831cf01fdc53 --- M lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js M repo/resources/wikibase.ui.entityViewInit.js 2 files changed, 153 insertions(+), 3 deletions(-) Approvals: Tobias Gritschacher: Looks good to me, approved jenkins-bot: Verified diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js b/lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js index d007de6..ddec4bb 100644 --- a/lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js +++ b/lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js @@ -137,6 +137,7 @@ this.element .on( 'snakviewchange.' + this.widgetName + + ' snaklistviewchange.' + this.widgetName + ' listviewitemadded.' + this.widgetName + ' listviewitemremoved.' + this.widgetName, function( event ) { @@ -146,7 +147,7 @@ var $snaklistview = $( event.target ).closest( ':wikibase-snaklistview' ), snaklistview = $snaklistview.data( 'snaklistview' ); - if( !snaklistview.value() ) { + if( snaklistview !snaklistview.value() ) { self.removeItem( snaklistview.element ); } } @@ -168,7 +169,7 @@ */ _detachEditModeEventHandlers: function() { this.element - .off( 'snakviewchange.' + this.widgetName ) + .off( 'snakviewchange.' + this.widgetName + ' ' + 'snaklistviewchange.' + this.widgetName ) .off( 'listviewitemadded.' + this.widgetName + ' listviewitemremoved.' + this.widgetName ) .off( this.options.listItemAdapter.prefixedEvent( 'stopediting.' + this.widgetName ) ); }, @@ -645,4 +646,153 @@ } } ); +$.wikibase.toolbarcontroller.definition( 'movetoolbar', { + id: 'referenceview-snakview', + selector: '.wb-statement-references .wb-referenceview', + events: { + 'snakviewstartediting': function( event ) { + var $snakview = $( event.target ), + $snaklistview = $snakview.closest( ':wikibase-snaklistview' ), + $referenceview = $snakview.closest( ':wikibase-referenceview' ), + referenceview = $referenceview.data( 'referenceview' ), + snakList = referenceview.options.listItemAdapter.liValue( $snaklistview ); + + // Prevent creating the toolbar for pending values. + if( snakList !== null ) { + // Since snakviewstartediting is triggered for every snakview, this creates the + // toolbar for each snakview widget: + $snakview.movetoolbar( { + listView: $referenceview + } ); + + // Disable move up button of topmost and move down button of bottommost + // snakview: + + var $topMostSnakview = referenceview.items().first().data( 'snaklistview' ) + ._listview.items().first(); + var $bottomMostSnakview = referenceview.items().last().data( 'snaklistview' ) + ._listview.items().last(); + + if ( $topMostSnakview.get( 0 ) === $snakview.get( 0 ) ) { + $snakview.data( 'movetoolbar' ).$btnMoveUp.data( 'toolbarbutton' ).disable(); + } + + if( $bottomMostSnakview.get( 0 ) === $snakview.get( 0 ) ) { + $snakview.data( 'movetoolbar' ).$btnMoveDown.data( 'toolbarbutton' ).disable(); + } + } + }, + 'referenceviewafterstopediting': function( event ) { + // Destroy the snakview toolbars: + var $referenceview = $( event.target ), + referenceview = $referenceview.data( 'referenceview' ); + + if( !referenceview ) { + // Stopped edit mode of a pending referenceview which does not feature any +
[MediaWiki-commits] [Gerrit] Registered movetoolbar definition for references - change (mediawiki...Wikibase)
Henning Snater has uploaded a new change for review. https://gerrit.wikimedia.org/r/84506 Change subject: Registered movetoolbar definition for references .. Registered movetoolbar definition for references Change-Id: I1922294f6dac0de6878a6e9c5f3c831cf01fdc53 --- M lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js M repo/resources/wikibase.ui.entityViewInit.js 2 files changed, 153 insertions(+), 3 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase refs/changes/06/84506/1 diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js b/lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js index d007de6..ddec4bb 100644 --- a/lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js +++ b/lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js @@ -137,6 +137,7 @@ this.element .on( 'snakviewchange.' + this.widgetName + + ' snaklistviewchange.' + this.widgetName + ' listviewitemadded.' + this.widgetName + ' listviewitemremoved.' + this.widgetName, function( event ) { @@ -146,7 +147,7 @@ var $snaklistview = $( event.target ).closest( ':wikibase-snaklistview' ), snaklistview = $snaklistview.data( 'snaklistview' ); - if( !snaklistview.value() ) { + if( snaklistview !snaklistview.value() ) { self.removeItem( snaklistview.element ); } } @@ -168,7 +169,7 @@ */ _detachEditModeEventHandlers: function() { this.element - .off( 'snakviewchange.' + this.widgetName ) + .off( 'snakviewchange.' + this.widgetName + ' ' + 'snaklistviewchange.' + this.widgetName ) .off( 'listviewitemadded.' + this.widgetName + ' listviewitemremoved.' + this.widgetName ) .off( this.options.listItemAdapter.prefixedEvent( 'stopediting.' + this.widgetName ) ); }, @@ -645,4 +646,153 @@ } } ); +$.wikibase.toolbarcontroller.definition( 'movetoolbar', { + id: 'referenceview-snakview', + selector: '.wb-statement-references .wb-referenceview', + events: { + 'snakviewstartediting': function( event ) { + var $snakview = $( event.target ), + $snaklistview = $snakview.closest( ':wikibase-snaklistview' ), + $referenceview = $snakview.closest( ':wikibase-referenceview' ), + referenceview = $referenceview.data( 'referenceview' ), + snakList = referenceview.options.listItemAdapter.liValue( $snaklistview ); + + // Prevent creating the toolbar for pending values. + if( snakList !== null ) { + // Since snakviewstartediting is triggered for every snakview, this creates the + // toolbar for each snakview widget: + $snakview.movetoolbar( { + listView: $referenceview + } ); + + // Disable move up button of topmost and move down button of bottommost + // snakview: + + var $topMostSnakview = referenceview.items().first().data( 'snaklistview' ) + ._listview.items().first(); + var $bottomMostSnakview = referenceview.items().last().data( 'snaklistview' ) + ._listview.items().last(); + + if ( $topMostSnakview.get( 0 ) === $snakview.get( 0 ) ) { + $snakview.data( 'movetoolbar' ).$btnMoveUp.data( 'toolbarbutton' ).disable(); + } + + if( $bottomMostSnakview.get( 0 ) === $snakview.get( 0 ) ) { + $snakview.data( 'movetoolbar' ).$btnMoveDown.data( 'toolbarbutton' ).disable(); + } + } + }, + 'referenceviewafterstopediting': function( event ) { + // Destroy the snakview toolbars: + var $referenceview = $( event.target ), + referenceview = $referenceview.data( 'referenceview' ); + + if( !referenceview ) { + // Stopped edit mode of a pending referenceview which