mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor
synced 2024-11-12 09:09:25 +00:00
Allow the gallery dialog to insert duplicate images initially
Change I94f4fadd84cd3e prevents the gallery dialog from inserting duplicate images into the gallery dialog after one request (e.g. so double-clicking on an image in the search widget doesn't cause the image to be inserted twice). However, galleries can intentionally contain duplicates of the same image, so it is possible to make a spearate request to insert a duplicate image. When the dialog is first opened, it requests all the images in the gallery at once, so the above change was causing the duplicates in an existing gallery to be dropped. Duplicates should be allowed to be inserted following this initial request. Bug: T150894 Change-Id: I34353bc9b8db947488474c4be52292e0a1447705
This commit is contained in:
parent
7f613ed571
commit
003ec7b653
|
@ -52,7 +52,8 @@ ve.ui.MWGalleryDialog.prototype.initialize = function () {
|
|||
// States
|
||||
this.highlightedItem = null;
|
||||
this.searchPanelVisible = false;
|
||||
this.imageCaptions = {};
|
||||
this.selectedFilenames = {};
|
||||
this.initialImageData = [];
|
||||
|
||||
// Default settings
|
||||
this.defaults = mw.config.get( 'wgVisualEditorConfig' ).galleryOptions;
|
||||
|
@ -300,7 +301,10 @@ ve.ui.MWGalleryDialog.prototype.getSetupProcess = function ( data ) {
|
|||
if ( title ) {
|
||||
titleText = title.getPrefixedText();
|
||||
imageTitles.push( titleText );
|
||||
dialog.imageCaptions[ titleText ] = matches[ 3 ];
|
||||
dialog.initialImageData.push( {
|
||||
title: titleText,
|
||||
caption: matches[ 3 ]
|
||||
} );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -433,14 +437,21 @@ ve.ui.MWGalleryDialog.prototype.onRequestImagesSuccess = function ( deferred, re
|
|||
}
|
||||
}
|
||||
|
||||
for ( title in this.imageCaptions ) {
|
||||
if ( this.initialImageData.length > 0 ) {
|
||||
this.initialImageData.forEach( function ( image ) {
|
||||
image.thumbUrl = thumbUrls[ image.title ];
|
||||
items.push( new ve.ui.MWGalleryItemWidget( image ) );
|
||||
} );
|
||||
this.initialImageData = [];
|
||||
} else {
|
||||
for ( title in this.selectedFilenames ) {
|
||||
if ( Object.prototype.hasOwnProperty.call( thumbUrls, title ) ) {
|
||||
items.push( new ve.ui.MWGalleryItemWidget( {
|
||||
title: title,
|
||||
caption: this.imageCaptions[ title ],
|
||||
thumbUrl: thumbUrls[ title ]
|
||||
} ) );
|
||||
delete this.imageCaptions[ title ];
|
||||
delete this.selectedFilenames[ title ];
|
||||
}
|
||||
}
|
||||
}
|
||||
this.galleryGroup.addItems( items );
|
||||
|
@ -459,8 +470,8 @@ ve.ui.MWGalleryDialog.prototype.onRequestImagesSuccess = function ( deferred, re
|
|||
ve.ui.MWGalleryDialog.prototype.addNewImage = function ( title ) {
|
||||
var dialog = this;
|
||||
|
||||
// Reset this.imageCaptions, for onRequestImagesSuccess
|
||||
this.imageCaptions[ title ] = '';
|
||||
// Make list of unique pending images, for onRequestImagesSuccess
|
||||
this.selectedFilenames[ title ] = true;
|
||||
|
||||
// Request image
|
||||
this.requestImages( {
|
||||
|
@ -482,7 +493,7 @@ ve.ui.MWGalleryDialog.prototype.addNewImage = function ( title ) {
|
|||
ve.ui.MWGalleryDialog.prototype.onSearchResultsChoose = function ( item ) {
|
||||
var title = mw.Title.newFromText( item.getData().title ).getPrefixedText();
|
||||
|
||||
if ( !Object.prototype.hasOwnProperty( this.imageCaptions, title ) ) {
|
||||
if ( !Object.prototype.hasOwnProperty( this.selectedFilenames, title ) ) {
|
||||
this.addNewImage( title );
|
||||
}
|
||||
};
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
ve.ui.MWGalleryItemWidget = function VeUiMWGalleryItemWidget( imageInfo, config ) {
|
||||
this.imageTitle = imageInfo.title;
|
||||
this.thumbUrl = imageInfo.thumbUrl;
|
||||
this.caption = imageInfo.caption;
|
||||
this.caption = imageInfo.caption || '';
|
||||
this.highlighted = false;
|
||||
|
||||
// Configuration initialization
|
||||
|
|
Loading…
Reference in a new issue