From: Prateek Saxena Date: Wed, 4 May 2016 16:13:55 +0000 (+0530) Subject: Gallery: Add new slider mode X-Git-Tag: 1.31.0-rc.0~6433 X-Git-Url: http://git.cyclocoop.org/%7B%24www_url%7Dadmin/compta/categories/modifier.php?a=commitdiff_plain;h=e3aa36ddee9254e934e2bd963f6e32c49f5260ec;p=lhc%2Fweb%2Fwiklou.git Gallery: Add new slider mode Bug: T128429 Change-Id: I14cac38cf1c66d9ba9584772a1cd3f345731b2af --- diff --git a/RELEASE-NOTES-1.28 b/RELEASE-NOTES-1.28 index 9281a96ac8..697665552c 100644 --- a/RELEASE-NOTES-1.28 +++ b/RELEASE-NOTES-1.28 @@ -19,6 +19,7 @@ production. === New features in 1.28 === * User::isBot() method for checking if an account is a bot role account. +* Added a new 'slider' mode for galleries. * Added a new hook, 'UserIsBot', to aid in determining if a user is a bot. * Added a new hook, 'ApiMakeParserOptions', to allow extensions to better interact with API parsing. diff --git a/autoload.php b/autoload.php index 0211c6d076..cd0a1643a9 100644 --- a/autoload.php +++ b/autoload.php @@ -1248,6 +1248,7 @@ $wgAutoloadLocalClasses = [ 'SkinFallback' => __DIR__ . '/includes/skins/SkinFallback.php', 'SkinFallbackTemplate' => __DIR__ . '/includes/skins/SkinFallbackTemplate.php', 'SkinTemplate' => __DIR__ . '/includes/skins/SkinTemplate.php', + 'SliderImageGallery' => __DIR__ . '/includes/gallery/SliderImageGallery.php', 'SpecialActiveUsers' => __DIR__ . '/includes/specials/SpecialActiveusers.php', 'SpecialAllMessages' => __DIR__ . '/includes/specials/SpecialAllMessages.php', 'SpecialAllMyUploads' => __DIR__ . '/includes/specials/SpecialMyRedirectPages.php', diff --git a/includes/gallery/ImageGalleryBase.php b/includes/gallery/ImageGalleryBase.php index c8a25f0b28..73f4b19d52 100644 --- a/includes/gallery/ImageGalleryBase.php +++ b/includes/gallery/ImageGalleryBase.php @@ -113,6 +113,7 @@ abstract class ImageGalleryBase extends ContextSource { 'packed' => 'PackedImageGallery', 'packed-hover' => 'PackedHoverImageGallery', 'packed-overlay' => 'PackedOverlayImageGallery', + 'slider' => 'SliderImageGallery', ]; // Allow extensions to make a new gallery format. Hooks::run( 'GalleryGetModes', [ &self::$modeMapping ] ); diff --git a/includes/gallery/SliderImageGallery.php b/includes/gallery/SliderImageGallery.php new file mode 100644 index 0000000000..67be9cea10 --- /dev/null +++ b/includes/gallery/SliderImageGallery.php @@ -0,0 +1,37 @@ +mPerRow = 0; + } + + /** + * Add javascript adds interface elements + * @return array + */ + protected function getModules() { + return [ 'mediawiki.page.gallery.slider' ]; + } +} diff --git a/maintenance/jsduck/categories.json b/maintenance/jsduck/categories.json index d9e2c50e99..631d2a7b6d 100644 --- a/maintenance/jsduck/categories.json +++ b/maintenance/jsduck/categories.json @@ -64,7 +64,8 @@ "mw.Feedback*", "mw.Upload*", "mw.ForeignUpload", - "mw.ForeignStructuredUpload*" + "mw.ForeignStructuredUpload*", + "mw.GallerySlider" ] }, { diff --git a/resources/Resources.php b/resources/Resources.php index 8526ec6c57..1805c842b7 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -1656,6 +1656,18 @@ return [ 'position' => 'top', 'targets' => [ 'desktop', 'mobile' ], ], + 'mediawiki.page.gallery.slider' => [ + 'scripts' => 'resources/src/mediawiki/page/gallery-slider.js', + 'position' => 'top', + 'dependencies' => [ + 'mediawiki.api', + 'mediawiki.Title', + 'oojs', + 'oojs-ui-core', + 'oojs-ui-widgets', + 'oojs-ui.styles.icons-media' + ] + ], 'mediawiki.page.ready' => [ 'scripts' => 'resources/src/mediawiki/page/ready.js', 'dependencies' => [ diff --git a/resources/src/mediawiki/page/gallery-slider.js b/resources/src/mediawiki/page/gallery-slider.js new file mode 100644 index 0000000000..82b22e89ad --- /dev/null +++ b/resources/src/mediawiki/page/gallery-slider.js @@ -0,0 +1,453 @@ +/*! + * mw.GallerySlider: Interface controls for the slider gallery + */ +( function ( mw, $, OO ) { + /** + * mw.GallerySlider encapsulates the user interface of the slider + * galleries. An object is instantiated for each `.mw-gallery-slider` + * element. + * + * @class mw.GallerySlider + * @uses mw.Title + * @uses mw.Api + * @param {jQuery} gallery The `