X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=resources%2Fsrc%2Fmediawiki.page.gallery.slideshow.js;h=4ea1999de69450a3de9ae73f6acff563daf8e45d;hb=4d6828ef7835b7c5c5e903637fcba4bf5c487e1b;hp=b62b45e25696eb0674235f650a9fd36f2175aba1;hpb=286a29ad36463a49d46c7a55db57886464a4dfa8;p=lhc%2Fweb%2Fwiklou.git diff --git a/resources/src/mediawiki.page.gallery.slideshow.js b/resources/src/mediawiki.page.gallery.slideshow.js index b62b45e256..4ea1999de6 100644 --- a/resources/src/mediawiki.page.gallery.slideshow.js +++ b/resources/src/mediawiki.page.gallery.slideshow.js @@ -68,10 +68,6 @@ * @property {jQuery} $img The `` element that'll display the current image. */ - /** - * @property {jQuery} $imgLink The `` element that links to the image's File page. - */ - /** * @property {jQuery} $imgCaption The `

` element that holds the image caption. */ @@ -138,12 +134,9 @@ this.$interface = interfaceElements.$element; // Containers for the current image, caption etc. - this.$img = $( '' ); - this.$imgLink = $( '' ).append( this.$img ); this.$imgCaption = $( '

' ).attr( 'class', 'mw-gallery-slideshow-caption' ); this.$imgContainer = $( '

' ) - .attr( 'class', 'mw-gallery-slideshow-img-container' ) - .append( this.$imgLink ); + .attr( 'class', 'mw-gallery-slideshow-img-container' ); carouselStack = new OO.ui.StackLayout( { continuous: true, @@ -238,7 +231,7 @@ * Displays the image set as {@link #$currentImage} in the carousel. */ mw.GallerySlideshow.prototype.showCurrentImage = function () { - var $thumbnail, + var $thumbnail, $imgLink, $imageLi = this.getCurrentImage(), $caption = $imageLi.find( '.gallerytext' ); @@ -249,19 +242,33 @@ .removeClass( 'slideshow-current' ); $imageLi.addClass( 'slideshow-current' ); - // 2. Show thumbnail this.$thumbnail = $imageLi.find( 'img' ); - this.$img.attr( { - src: this.$thumbnail.attr( 'src' ), - alt: this.$thumbnail.attr( 'alt' ) - } ); - this.$imgLink.attr( 'href', $imageLi.find( 'a' ).eq( 0 ).attr( 'href' ) ); + if ( this.$thumbnail.length ) { + // 2. Create and show thumbnail + this.$img = $( '' ).attr( { + src: this.$thumbnail.attr( 'src' ), + alt: this.$thumbnail.attr( 'alt' ) + } ); + // 'image' class required for detection by MultimediaViewer + $imgLink = $( '' ).addClass( 'image' ) + .attr( 'href', $imageLi.find( 'a' ).eq( 0 ).attr( 'href' ) ) + .append( this.$img ); + + this.$imgContainer.empty().append( $imgLink ); + } else { + // 2b. No image found (e.g. file doesn't exist) + this.$imgContainer.text( $imageLi.find( '.thumb' ).text() ); + } // 3. Copy caption this.$imgCaption .empty() .append( $caption.clone() ); + if ( !this.$thumbnail.length ) { + return; + } + // 4. Stretch thumbnail to correct size this.setImageSize(); @@ -272,10 +279,15 @@ if ( this.$thumbnail.attr( 'src' ) === $thumbnail.attr( 'src' ) ) { this.$img.attr( 'src', info.thumburl ); this.setImageSize(); + mw.hook( 'wikipage.content' ).fire( this.$imgContainer ); // Pre-fetch the next image this.loadImage( this.getNextImage().find( 'img' ) ); } + }.bind( this ) ).fail( function () { + // Image didn't load + var title = mw.Title.newFromImg( this.$img ); + this.$imgContainer.text( title ? title.getMainText() : '' ); }.bind( this ) ); };