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

Change subject: New RCFilters group for "Flagged Revisions"
......................................................................


New RCFilters group for "Flagged Revisions"

Create new RC Filters group for "Flagged Revisions",
based on the old 'Hide reviewed edits' function.

Bug: T159791
Change-Id: I67e15ce76f740603a41b57b019b7d8619db2e7e5
---
M frontend/FlaggedRevsUI.hooks.php
M i18n/flaggedrevs/en.json
M i18n/flaggedrevs/qqq.json
3 files changed, 139 insertions(+), 1 deletion(-)

Approvals:
  Sbisson: Looks good to me, approved
  jenkins-bot: Verified
  Jforrester: Looks good to me, approved



diff --git a/frontend/FlaggedRevsUI.hooks.php b/frontend/FlaggedRevsUI.hooks.php
index 6393061..bc533ee 100644
--- a/frontend/FlaggedRevsUI.hooks.php
+++ b/frontend/FlaggedRevsUI.hooks.php
@@ -318,7 +318,8 @@
                if ( FlaggedRevs::useSimpleConfig() ) {
                        return true;
                }
-               // TODO: Use the new structured UI: T162902
+
+               // Old filter, replaced in structured UI
                $flaggedRevsUnstructuredGroup = new 
ChangesListBooleanFilterGroup(
                        [
                                'name' => 'flaggedRevsUnstructured',
@@ -327,6 +328,7 @@
                                        [
                                                'name' => 'hideReviewed',
                                                'showHide' => 
'flaggedrevs-hidereviewed',
+                                               'isReplacedInStructuredUi' => 
true,
                                                'default' => false,
                                                'queryCallable' => function ( 
$specialClassName, $ctx, $dbr, &$tables,
                                                        &$fields, &$conds, 
&$query_options, &$join_conds
@@ -341,6 +343,130 @@
                );
 
                $specialPage->registerFilterGroup( 
$flaggedRevsUnstructuredGroup );
+
+               $flaggedRevsGroup = new ChangesListStringOptionsFilterGroup(
+                       [
+                               'name' => 'flaggedrevs',
+                               'title' => 'flaggedrevs',
+                               'priority' => -9,
+                               'default' => 
ChangesListStringOptionsFilterGroup::NONE,
+                               'isFullCoverage' => true,
+                               'filters' => [
+                                       [
+                                               'name' => 'needreview',
+                                               'label' => 
'flaggedrevs-rcfilters-need-review-label',
+                                               'description' => 
'flaggedrevs-rcfilters-need-review-desc',
+                                               'cssClassSuffix' => 
'need-review',
+                                               'isRowApplicableCallable' => 
function ( $ctx, $rc ) {
+                                                       $namespaces = 
FlaggedRevs::getReviewNamespaces();
+                                                       return ( in_array( 
$rc->getAttribute( 'rc_namespace' ), $namespaces ) &&
+                                                               
$rc->getAttribute( 'rc_type' ) !== RC_EXTERNAL ) &&
+                                                               (
+                                                                       
!$rc->getAttribute( 'fp_stable' ) ||
+                                                                       (
+                                                                               
// The rc_timestamp >= fp_pending_since condition implies that fp_pending_since 
is
+                                                                               
// not null, because all comparisons with null values are false in MySQL. It 
doesn't
+                                                                               
// work that way in PHP, so we have to explicitly check that fp_pending_since 
is not null
+                                                                               
$rc->getAttribute( 'fp_pending_since' ) &&
+                                                                               
$rc->getAttribute( 'rc_timestamp' ) >= $rc->getAttribute( 'fp_pending_since' )
+                                                                       )
+                                                               );
+                                               }
+                                       ],
+                                       [
+                                               'name' => 'reviewed',
+                                               'label' => 
'flaggedrevs-rcfilters-reviewed-label',
+                                               'description' => 
'flaggedrevs-rcfilters-reviewed-desc',
+                                               'cssClassSuffix' => 'reviewed',
+                                               'isRowApplicableCallable' => 
function ( $ctx, $rc ) {
+                                                       $namespaces = 
FlaggedRevs::getReviewNamespaces();
+                                                       return ( in_array( 
$rc->getAttribute( 'rc_namespace' ), $namespaces ) &&
+                                                               
$rc->getAttribute( 'rc_type' ) !== RC_EXTERNAL ) &&
+                                                               
$rc->getAttribute( 'fp_stable' ) &&
+                                                               (
+                                                                       
!$rc->getAttribute( 'fp_pending_since' ) ||
+                                                                       
$rc->getAttribute( 'rc_timestamp' ) < $rc->getAttribute( 'fp_pending_since' )
+                                                               );
+                                               }
+                                       ],
+                                       [
+                                               'name' => 'notreviewable',
+                                               'label' => 
'flaggedrevs-rcfilters-not-reviewable-label',
+                                               'description' => 
'flaggedrevs-rcfilters-not-reviewable-desc',
+                                               'cssClassSuffix' => 
'not-reviewable',
+                                               'isRowApplicableCallable' => 
function ( $ctx, $rc ) {
+                                                       $namespaces = 
FlaggedRevs::getReviewNamespaces();
+                                                       return !in_array( 
$rc->getAttribute( 'rc_namespace' ), $namespaces );
+                                               }
+                                       ],
+                               ],
+                               'queryCallable' => function ( 
$specialClassName, $ctx, $dbr, &$tables,
+                                       &$fields, &$conds, &$query_options, 
&$join_conds, $selectedValues
+                               ) {
+                                       $fields[] = 'fp_stable';
+                                       $fields[] = 'fp_pending_since';
+                                       $fields[] = 'rc_namespace';
+
+                                       $namespaces = 
FlaggedRevs::getReviewNamespaces();
+                                       $needReviewCond = 'rc_timestamp >= 
fp_pending_since OR fp_stable IS NULL';
+                                       $reviewedCond = '(fp_pending_since IS 
NULL OR rc_timestamp < fp_pending_since) '.
+                                               'AND fp_stable IS NOT NULL';
+                                       $notReviewableCond = 'rc_namespace NOT 
IN (' . $dbr->makeList( $namespaces ) .
+                                               ') OR rc_type = ' . 
$dbr->addQuotes( RC_EXTERNAL );
+                                       $reviewableCond = 'rc_namespace IN (' . 
$dbr->makeList( $namespaces ) .
+                                               ') AND rc_type != ' . 
$dbr->addQuotes( RC_EXTERNAL );
+
+                                       if ( $selectedValues === [ 
'needreview', 'notreviewable', 'reviewed' ] ) {
+                                               // no filters
+                                               return;
+                                       }
+
+                                       if ( $selectedValues === [ 
'needreview', 'reviewed' ] ) {
+                                               $conds[] = $reviewableCond;
+                                               return;
+                                       }
+
+                                       if ( $selectedValues === [ 
'needreview', 'notreviewable' ] ) {
+                                               $conds[] = $dbr->makeList( [
+                                                       $notReviewableCond,
+                                                       $needReviewCond
+                                               ], LIST_OR );
+                                               return;
+                                       }
+
+                                       if ( $selectedValues === [ 
'notreviewable', 'reviewed' ] ) {
+                                               $conds[] = $dbr->makeList( [
+                                                       $notReviewableCond,
+                                                       $reviewedCond
+                                               ], LIST_OR );
+                                               return;
+                                       }
+
+                                       if ( $selectedValues === [ 'needreview' 
] ) {
+                                               $conds[] = $dbr->makeList( [
+                                                       $reviewableCond,
+                                                       $needReviewCond
+                                               ], LIST_AND );
+                                               return;
+                                       }
+
+                                       if ( $selectedValues === [ 
'notreviewable' ] ) {
+                                               $conds[] = $notReviewableCond;
+                                               return;
+                                       }
+
+                                       if ( $selectedValues === [ 'reviewed' ] 
) {
+                                               $conds[] = $dbr->makeList( [
+                                                       $reviewableCond,
+                                                       $reviewedCond
+                                               ], LIST_AND );
+                                               return;
+                                       }
+                               }
+                       ]
+               );
+
+               $specialPage->registerFilterGroup( $flaggedRevsGroup );
                return true;
        }
 
diff --git a/i18n/flaggedrevs/en.json b/i18n/flaggedrevs/en.json
index 3bab82f..f8e0b56 100644
--- a/i18n/flaggedrevs/en.json
+++ b/i18n/flaggedrevs/en.json
@@ -26,6 +26,12 @@
        "flaggedrevs-hidereviewed": "$1 reviewed edits",
        "flaggedrevs-hidereviewed-hide": "Hide",
        "flaggedrevs-hidereviewed-show": "Show",
+       "flaggedrevs-rcfilters-need-review-label": "Need review",
+       "flaggedrevs-rcfilters-need-review-desc": "Edits requiring review.",
+       "flaggedrevs-rcfilters-reviewed-label": "Reviewed",
+       "flaggedrevs-rcfilters-reviewed-desc": "Edits that have been reviewed.",
+       "flaggedrevs-rcfilters-not-reviewable-label": "Not subject to review",
+       "flaggedrevs-rcfilters-not-reviewable-desc": "Changes of all types that 
don't require review.",
        "flaggedrevs-diffonly": "",
        "group-editor": "Editors",
        "group-editor-member": "{{GENDER:$1|editor}}",
diff --git a/i18n/flaggedrevs/qqq.json b/i18n/flaggedrevs/qqq.json
index d87b91e..350a438 100644
--- a/i18n/flaggedrevs/qqq.json
+++ b/i18n/flaggedrevs/qqq.json
@@ -56,6 +56,12 @@
        "flaggedrevs-hidereviewed": "{{Flagged Revs}}\nShown within parenthesis 
on [[Special:Recentchanges]], [[Special:NewPages]]  and 
[[Special:Watchlist]].\n\nThis refers to a toggle to hide or show edits 
(revisions) that have been reviewed.\n\nIf set to \"hide\", it also hides edits 
to pages that are not reviewable (like Talk pages).\n\nParameters:\n* $1 - a 
link with the text {{msg-mw|flaggedrevs-hidereviewed-show}} or 
{{msg-mw|flaggedrevs-hidereviewed-hide}}",
        "flaggedrevs-hidereviewed-hide": "{{doc-actionlink}}\nOption text in 
[[Special:RecentChanges]] in conjunction with 
{{msg-mw|flaggedrevs-hidereviewed}}.\n\nSee also:\n* 
{{msg-mw|flaggedrevs-hidereviewed-show}}\n{{Identical|Hide}}",
        "flaggedrevs-hidereviewed-show": "{{doc-actionlink}}\nOption text in 
[[Special:RecentChanges]] in conjunction with 
{{msg-mw|flaggedrevs-hidereviewed}}.\n\nSee also:\n* 
{{msg-mw|flaggedrevs-hidereviewed-hide}}\n{{Identical|Show}}",
+       "flaggedrevs-rcfilters-need-review-label": "Label for the filter for 
showing edits that require review.",
+       "flaggedrevs-rcfilters-need-review-desc": "Description for the filter 
for showing edits that require review.",
+       "flaggedrevs-rcfilters-reviewed-label": "Label for the filter for 
showing edits that have been reviewed.",
+       "flaggedrevs-rcfilters-reviewed-desc": "Description for the filter for 
showing edits that have been reviewed.",
+       "flaggedrevs-rcfilters-not-reviewable-label": "Label for the filter for 
showing edits of all types that don't require review.",
+       "flaggedrevs-rcfilters-not-reviewable-desc": "Description for the 
filter for showing edits of all types that don't require review.",
        "flaggedrevs-diffonly": "{{Flagged Revs}}\n{{notranslate}}",
        "group-editor": "{{Flagged 
Revs}}\n{{doc-group|editor}}\n{{Identical|Editor}}",
        "group-editor-member": "{{Flagged 
Revs}}\n{{doc-group|editor|member}}\n{{Identical|Editor}}",

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I67e15ce76f740603a41b57b019b7d8619db2e7e5
Gerrit-PatchSet: 11
Gerrit-Project: mediawiki/extensions/FlaggedRevs
Gerrit-Branch: master
Gerrit-Owner: Petar.petkovic <[email protected]>
Gerrit-Reviewer: Aaron Schulz <[email protected]>
Gerrit-Reviewer: Catrope <[email protected]>
Gerrit-Reviewer: Cenarium <[email protected]>
Gerrit-Reviewer: Jackmcbarn <[email protected]>
Gerrit-Reviewer: Jforrester <[email protected]>
Gerrit-Reviewer: Petar.petkovic <[email protected]>
Gerrit-Reviewer: Sbisson <[email protected]>
Gerrit-Reviewer: Siebrand <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to