jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/326476 )

Change subject: Date range filtering in Special:NewFiles
......................................................................


Date range filtering in Special:NewFiles

Bug: T13836
Change-Id: I6149a081db2494a36a715259b76a0c0470149b8c
---
M includes/specials/SpecialNewimages.php
M includes/specials/pagers/NewFilesPager.php
M resources/Resources.php
A resources/src/mediawiki.special/mediawiki.special.newFiles.js
4 files changed, 67 insertions(+), 3 deletions(-)

Approvals:
  Matthias Mullie: Looks good to me, approved
  Hashar: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/includes/specials/SpecialNewimages.php 
b/includes/specials/SpecialNewimages.php
index 12dae8b..583d4f9 100644
--- a/includes/specials/SpecialNewimages.php
+++ b/includes/specials/SpecialNewimages.php
@@ -34,6 +34,7 @@
                $this->outputHeader();
 
                $out = $this->getOutput();
+               $out->addModules( 'mediawiki.special.newFiles' );
                $this->addHelpLink( 'Help:New images' );
 
                $opts = new FormOptions();
@@ -44,11 +45,26 @@
                $opts->add( 'hidepatrolled', false );
                $opts->add( 'limit', 50 );
                $opts->add( 'offset', '' );
+               $opts->add( 'start', '' );
+               $opts->add( 'end', '' );
 
                $opts->fetchValuesFromRequest( $this->getRequest() );
 
                if ( $par !== null ) {
                        $opts->setValue( is_numeric( $par ) ? 'limit' : 'like', 
$par );
+               }
+
+               // If start date comes after end date chronologically, swap 
them.
+               // They are swapped in the interface by JS.
+               $start = $opts->getValue( 'start' );
+               $end = $opts->getValue( 'end' );
+               if ( $start !== '' && $end !== '' && $start > $end ) {
+                       $temp = $end;
+                       $end = $start;
+                       $start = $temp;
+
+                       $opts->setValue( 'start', $start, true );
+                       $opts->setValue( 'end', $end, true );
                }
 
                $opts->validateIntBounds( 'limit', 0, 500 );
@@ -105,6 +121,18 @@
                                'default' => $this->opts->getValue( 'offset' ),
                                'name' => 'offset',
                        ],
+
+                       'start' => [
+                               'type' => 'date',
+                               'label-message' => 'date-range-from',
+                               'name' => 'start',
+                       ],
+
+                       'end' => [
+                               'type' => 'date',
+                               'label-message' => 'date-range-to',
+                               'name' => 'end',
+                       ],
                ];
 
                if ( $this->getConfig()->get( 'MiserMode' ) ) {
diff --git a/includes/specials/pagers/NewFilesPager.php 
b/includes/specials/pagers/NewFilesPager.php
index e2d9d42..cce0323 100644
--- a/includes/specials/pagers/NewFilesPager.php
+++ b/includes/specials/pagers/NewFilesPager.php
@@ -24,7 +24,7 @@
  */
 use MediaWiki\MediaWikiServices;
 
-class NewFilesPager extends ReverseChronologicalPager {
+class NewFilesPager extends RangeChronologicalPager {
 
        /**
         * @var ImageGalleryBase
@@ -41,11 +41,20 @@
         * @param FormOptions $opts
         */
        function __construct( IContextSource $context, FormOptions $opts ) {
-               $this->opts = $opts;
+               parent::__construct( $context );
 
+               $this->opts = $opts;
                $this->setLimit( $opts->getValue( 'limit' ) );
 
-               parent::__construct( $context );
+               $startTimestamp = '';
+               $endTimestamp = '';
+               if ( $opts->getValue( 'start' ) ) {
+                       $startTimestamp = $opts->getValue( 'start' ) . ' 
00:00:00';
+               }
+               if ( $opts->getValue( 'end' ) ) {
+                       $endTimestamp = $opts->getValue( 'end' ) . ' 23:59:59';
+               }
+               $this->getDateRangeCond( $startTimestamp, $endTimestamp );
        }
 
        function getQueryInfo() {
diff --git a/resources/Resources.php b/resources/Resources.php
index e8c8f61..8071bd9 100644
--- a/resources/Resources.php
+++ b/resources/Resources.php
@@ -1978,6 +1978,12 @@
        'mediawiki.special.movePage.styles' => [
                'styles' => 
'resources/src/mediawiki.special/mediawiki.special.movePage.css',
        ],
+       'mediawiki.special.newFiles' => [
+               'scripts' => 
'resources/src/mediawiki.special/mediawiki.special.newFiles.js',
+               'dependencies' => [
+                       'mediawiki.widgets.datetime',
+               ],
+       ],
        'mediawiki.special.pageLanguage' => [
                'scripts' => 
'resources/src/mediawiki.special/mediawiki.special.pageLanguage.js',
                'dependencies' => [
diff --git a/resources/src/mediawiki.special/mediawiki.special.newFiles.js 
b/resources/src/mediawiki.special/mediawiki.special.newFiles.js
new file mode 100644
index 0000000..5e86eaa
--- /dev/null
+++ b/resources/src/mediawiki.special/mediawiki.special.newFiles.js
@@ -0,0 +1,21 @@
+/*!
+ * JavaScript for Special:NewFiles
+ */
+( function ( mw, $ ) {
+       $( function () {
+               var start = 
mw.widgets.datetime.DateTimeInputWidget.static.infuse( 'mw-input-start' ),
+                       end = 
mw.widgets.datetime.DateTimeInputWidget.static.infuse( 'mw-input-end' ),
+                       temp;
+
+               // If the start date comes after the end date, swap the two 
values.
+               // This swap is already done internally when the form is 
submitted with a start date that
+               // comes after the end date, but this swap makes the change 
visible in the HTMLForm.
+               if ( start.getValue() !== '' &&
+                       end.getValue() !== '' &&
+                       start.getValue() > end.getValue() ) {
+                       temp = start.getValue();
+                       start.setValue( end.getValue() );
+                       end.setValue( temp );
+               }
+       } );
+}( mediaWiki, jQuery ) );

-- 
To view, visit https://gerrit.wikimedia.org/r/326476
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I6149a081db2494a36a715259b76a0c0470149b8c
Gerrit-PatchSet: 21
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Sn1per <[email protected]>
Gerrit-Reviewer: Bartosz DziewoƄski <[email protected]>
Gerrit-Reviewer: Florianschmidtwelzow <[email protected]>
Gerrit-Reviewer: Fomafix <[email protected]>
Gerrit-Reviewer: Hashar <[email protected]>
Gerrit-Reviewer: MarkTraceur <[email protected]>
Gerrit-Reviewer: Matthias Mullie <[email protected]>
Gerrit-Reviewer: Sn1per <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to