Convert /revert to use OOUI

This one was left out, probably because it's not well documented.
Together with the simple conversion, I also added a cap to time
selectors (otherwise users may create huge breaking queries) and wrapped
in a class=success P the success message, like we do when saving
filters.

Bug: T132284
Change-Id: I2ba0a54e27608949cd28b9ac0447d1f2157b0ea2
This commit is contained in:
Daimona Eaytoy 2018-03-25 16:17:31 +02:00
parent e18cd9b92d
commit 90436c9e59
3 changed files with 85 additions and 47 deletions

View file

@ -377,8 +377,9 @@
"abusefilter-revert-periodstart": "Period start:",
"abusefilter-revert-periodend": "Period end:",
"abusefilter-revert-search": "Select actions",
"abusefilter-revert-filter": "Filter:",
"abusefilter-revert-filter": "Filter ID:",
"abusefilter-revert-preview-intro": "Below are the actions taken by the abuse filter that will be reverted by this action.\nPlease check them carefully, and click \"{{int:abusefilter-revert-confirm}}\" to confirm your selection.",
"abusefilter-revert-confirm-legend": "Confirm the revert",
"abusefilter-revert-confirm": "Confirm",
"abusefilter-revert-success": "You have reverted all actions taken by the abuse filter due to [[Special:AbuseFilter/$1|filter $2]].",
"abusefilter-revert-reason": "Automatic revert of all actions taken by the abuse filter due to filter $1.\nReason given: $2",

View file

@ -411,6 +411,7 @@
"abusefilter-revert-search": "Used as label on [[Special:AbuseFilter/revert]]",
"abusefilter-revert-filter": "{{Identical|Filter}}",
"abusefilter-revert-preview-intro": "Refers to {{msg-mw|Abusefilter-revert-confirm}}.",
"abusefilter-revert-confirm-legend": "Form fieldset for [[Special:AbuseFilter/revert]] asking the user to confirm the revert. Refers to {{msg-mw|Abusefilter-revert-confirm}}.",
"abusefilter-revert-confirm": "This is also used in {{msg-mw|Abusefilter-revert-preview-intro}}. When changing this message, please also remember to change that one.\n{{Identical|Confirm}}",
"abusefilter-revert-success": "Parameters:\n* $1 - a filter ID\n* $2 - localized filter ID",
"abusefilter-revert-reason": "Parameters:\n* $1 is a filter ID\n* $2 is a reason",

View file

@ -5,6 +5,7 @@ class AbuseFilterViewRevert extends AbuseFilterView {
$mReason;
function show() {
$lang = $this->getLanguage();
$filter = $this->mPage->mFilter;
$user = $this->getUser();
@ -23,29 +24,47 @@ class AbuseFilterViewRevert extends AbuseFilterView {
$out->addWikiMsg( 'abusefilter-revert-intro', Message::numParam( $filter ) );
$out->setPageTitle( $this->msg( 'abusefilter-revert-title' )->numParams( $filter ) );
// First, the search form.
$searchFields = [];
$searchFields['abusefilter-revert-filter'] =
Xml::element( 'strong', null, $filter );
$searchFields['abusefilter-revert-periodstart'] =
Xml::input( 'wpPeriodStart', 45, $this->origPeriodStart );
$searchFields['abusefilter-revert-periodend'] =
Xml::input( 'wpPeriodEnd', 45, $this->origPeriodEnd );
$searchForm = Xml::buildForm( $searchFields, 'abusefilter-revert-search' );
$searchForm .= "\n" . Html::hidden( 'submit', 1 );
$searchForm =
Xml::tags(
'form',
[
'action' => $this->getTitle( "revert/$filter" )->getLocalURL(),
'method' => 'post'
],
$searchForm
// First, the search form. Limit dates to avoid huge queries
$RCMaxAge = $this->getConfig()->get( 'RCMaxAge' );
$min = wfTimestamp( TS_ISO_8601, time() - $RCMaxAge );
$max = wfTimestampNow();
$filterLink =
$this->linkRenderer->makeLink(
SpecialPage::getTitleFor( 'AbuseFilter', intval( $filter ) ),
$lang->formatNum( intval( $filter ) )
);
$searchForm =
Xml::fieldset( $this->msg( 'abusefilter-revert-search-legend' )->text(), $searchForm );
$searchFields = [];
$searchFields['filterid'] = [
'type' => 'info',
'default' => $filterLink,
'raw' => true,
'label-message' => 'abusefilter-revert-filter'
];
$searchFields['periodstart'] = [
'type' => 'datetime',
'name' => 'wpPeriodStart',
'default' => $this->origPeriodStart,
'label-message' => 'abusefilter-revert-periodstart',
'min' => $min,
'max' => $max
];
$searchFields['periodend'] = [
'type' => 'datetime',
'name' => 'wpPeriodEnd',
'default' => $this->origPeriodEnd,
'label-message' => 'abusefilter-revert-periodend',
'min' => $min,
'max' => $max
];
$out->addHTML( $searchForm );
HTMLForm::factory( 'ooui', $searchFields, $this->getContext() )
->addHiddenField( 'submit', 1 )
->setAction( $this->getTitle( "revert/$filter" )->getLocalURL() )
->setWrapperLegendMsg( 'abusefilter-revert-search-legend' )
->setSubmitTextMsg( 'abusefilter-revert-search' )
->setMethod( 'post' )
->prepareForm()
->displayForm( false );
if ( $this->mSubmit ) {
// Add a summary of everything that will be reversed.
@ -53,7 +72,6 @@ class AbuseFilterViewRevert extends AbuseFilterView {
// Look up all of them.
$results = $this->doLookup();
$lang = $this->getLanguage();
$list = [];
foreach ( $results as $result ) {
@ -81,26 +99,41 @@ class AbuseFilterViewRevert extends AbuseFilterView {
$out->addHTML( Xml::tags( 'ul', null, implode( "\n", $list ) ) );
// Add a button down the bottom.
$confirmForm =
Html::hidden( 'editToken', $user->getEditToken( "abusefilter-revert-$filter" ) ) .
Html::hidden( 'title', $this->getTitle( "revert/$filter" )->getPrefixedDBkey() ) .
Html::hidden( 'wpPeriodStart', $this->origPeriodStart ) .
Html::hidden( 'wpPeriodEnd', $this->origPeriodEnd ) .
Xml::inputLabel(
$this->msg( 'abusefilter-revert-reasonfield' )->text(),
'wpReason', 'wpReason', 45
) .
"\n" .
Xml::submitButton( $this->msg( 'abusefilter-revert-confirm' )->text() );
$confirmForm = Xml::tags(
'form',
[
'action' => $this->getTitle( "revert/$filter" )->getLocalURL(),
'method' => 'post'
],
$confirmForm
);
$out->addHTML( $confirmForm );
$confirmForm = [];
$confirmForm['edittoken'] = [
'type' => 'hidden',
'name' => 'editToken',
'default' => $user->getEditToken( "abusefilter-revert-$filter" )
];
$confirmForm['title'] = [
'type' => 'hidden',
'name' => 'title',
'default' => $this->getTitle( "revert/$filter" )->getPrefixedDBkey()
];
$confirmForm['wpPeriodStart'] = [
'type' => 'hidden',
'name' => 'wpPeriodStart',
'default' => $this->origPeriodStart
];
$confirmForm['wpPeriodEnd'] = [
'type' => 'hidden',
'name' => 'wpPeriodEnd',
'default' => $this->origPeriodEnd
];
$confirmForm['reason'] = [
'type' => 'text',
'label-message' => 'abusefilter-revert-reasonfield',
'name' => 'wpReason',
'id' => 'wpReason',
];
HTMLForm::factory( 'ooui', $confirmForm, $this->getContext() )
->setAction( $this->getTitle( "revert/$filter" )->getLocalURL() )
->setWrapperLegendMsg( 'abusefilter-revert-confirm-legend' )
->setSubmitTextMsg( 'abusefilter-revert-confirm' )
->setMethod( 'post' )
->prepareForm()
->displayForm( false );
}
}
@ -175,10 +208,13 @@ class AbuseFilterViewRevert extends AbuseFilterView {
$this->revertAction( $action, $result );
}
}
$this->getOutput()->addWikiMsg(
'abusefilter-revert-success',
$filter,
$this->getLanguage()->formatNum( $filter )
$this->getOutput()->wrapWikiMsg(
'<p class="success">$1</p>',
[
'abusefilter-revert-success',
$filter,
$this->getLanguage()->formatNum( $filter )
]
);
return true;