Convert article delete to use OOUI

Bug: T113758
Change-Id: Ia40919aa750ab91ad16f727273f8bad1f1c9965d
This commit is contained in:
Ed Sanders 2017-05-09 18:24:17 +01:00
parent 005802b82b
commit 97a8fb78fa

View file

@ -1691,62 +1691,117 @@ class Article implements Page {
$suppress = '';
}
$checkWatch = $user->getBoolOption( 'watchdeletion' ) || $user->isWatched( $title );
$form = Html::openElement( 'form', [ 'method' => 'post',
'action' => $title->getLocalURL( 'action=delete' ), 'id' => 'deleteconfirm' ] ) .
Html::openElement( 'fieldset', [ 'id' => 'mw-delete-table' ] ) .
Html::element( 'legend', null, wfMessage( 'delete-legend' )->text() ) .
Html::openElement( 'div', [ 'id' => 'mw-deleteconfirm-table' ] ) .
Html::openElement( 'div', [ 'id' => 'wpDeleteReasonListRow' ] ) .
Html::label( wfMessage( 'deletecomment' )->text(), 'wpDeleteReasonList' ) .
' ' .
Xml::listDropDown(
'wpDeleteReasonList',
wfMessage( 'deletereason-dropdown' )->inContentLanguage()->text(),
wfMessage( 'deletereasonotherlist' )->inContentLanguage()->text(),
'',
'wpReasonDropDown',
1
) .
Html::closeElement( 'div' ) .
Html::openElement( 'div', [ 'id' => 'wpDeleteReasonRow' ] ) .
Html::label( wfMessage( 'deleteotherreason' )->text(), 'wpReason' ) .
' ' .
Html::input( 'wpReason', $reason, 'text', [
'size' => '60',
'maxlength' => '255',
'tabindex' => '2',
'id' => 'wpReason',
'class' => 'mw-ui-input-inline',
'autofocus'
] ) .
Html::closeElement( 'div' );
# Disallow watching if user is not logged in
if ( $user->isLoggedIn() ) {
$form .=
Xml::checkLabel( wfMessage( 'watchthis' )->text(),
'wpWatch', 'wpWatch', $checkWatch, [ 'tabindex' => '3' ] );
$outputPage->enableOOUI();
$options = [];
$options[] = [
'data' => 'other',
'label' => $ctx->msg( 'deletereasonotherlist' )->inContentLanguage()->text(),
];
$list = $ctx->msg( 'deletereason-dropdown' )->inContentLanguage()->text();
foreach ( explode( "\n", $list ) as $option ) {
$value = trim( $option );
if ( $value == '' ) {
continue;
} elseif ( substr( $value, 0, 1 ) == '*' && substr( $value, 1, 1 ) != '*' ) {
$options[] = [ 'optgroup' => trim( substr( $value, 1 ) ) ];
} elseif ( substr( $value, 0, 2 ) == '**' ) {
$options[] = [ 'data' => trim( substr( $value, 2 ) ) ];
} else {
$options[] = [ 'data' => trim( $value ) ];
}
}
$form .=
Html::openElement( 'div' ) .
$suppress .
Xml::submitButton( wfMessage( 'deletepage' )->text(),
$fields[] = new OOUI\FieldLayout(
new OOUI\DropdownInputWidget( [
'name' => 'wpDeleteReasonList',
'inputId' => 'wpDeleteReasonList',
'tabIndex' => 1,
'infusable' => true,
'value' => '',
'options' => $options
] ),
[
'name' => 'wpConfirmB',
'id' => 'wpConfirmB',
'tabindex' => '5',
'class' => $useMediaWikiUIEverywhere ? 'mw-ui-button mw-ui-destructive' : '',
'label' => $ctx->msg( 'deletecomment' )->text(),
'align' => 'top',
]
) .
Html::closeElement( 'div' ) .
Html::closeElement( 'div' ) .
Xml::closeElement( 'fieldset' ) .
Html::hidden(
'wpEditToken',
$user->getEditToken( [ 'delete', $title->getPrefixedText() ] )
) .
Xml::closeElement( 'form' );
);
$fields[] = new OOUI\FieldLayout(
new OOUI\TextInputWidget( [
'name' => 'wpReason',
'inputId' => 'wpReason',
'tabIndex' => 2,
'maxLength' => 255,
'infusable' => true,
'value' => $reason,
'autofocus' => true,
] ),
[
'label' => $ctx->msg( 'deleteotherreason' )->text(),
'align' => 'top',
]
);
if ( $user->isLoggedIn() ) {
$fields[] = new OOUI\FieldLayout(
new OOUI\CheckboxInputWidget( [
'name' => 'wpWatch',
'inputId' => 'wpWatch',
'tabIndex' => 3,
'selected' => $checkWatch,
] ),
[
'label' => $ctx->msg( 'watchthis' )->text(),
'align' => 'inline',
'infusable' => true,
]
);
}
$fields[] = new OOUI\FieldLayout(
new OOUI\ButtonInputWidget( [
'name' => 'wpConfirmB',
'inputId' => 'wpConfirmB',
'tabIndex' => 5,
'value' => $ctx->msg( 'deletepage' )->text(),
'label' => $ctx->msg( 'deletepage' )->text(),
'flags' => [ 'primary', 'destructive' ],
'type' => 'submit',
] ),
[
'align' => 'top',
]
);
$fieldset = new OOUI\FieldsetLayout( [
'label' => $ctx->msg( 'delete-legend' )->text(),
'id' => 'mw-delete-table',
'items' => $fields,
] );
$form = new OOUI\FormLayout( [
'method' => 'post',
'action' => $title->getLocalURL( 'action=delete' ),
'id' => 'deleteconfirm',
] );
$form->appendContent(
$fieldset,
new OOUI\HtmlSnippet(
Html::hidden( 'wpEditToken', $user->getEditToken( [ 'delete', $title->getPrefixedText() ] ) )
)
);
$outputPage->addHTML(
new OOUI\PanelLayout( [
'classes' => [ 'deletepage-wrapper' ],
'expanded' => false,
'padded' => true,
'framed' => true,
'content' => $form,
] )
);
if ( $user->isAllowed( 'editinterface' ) ) {
$link = Linker::linkKnown(
@ -1755,11 +1810,9 @@ class Article implements Page {
[],
[ 'action' => 'edit' ]
);
$form .= '<p class="mw-delete-editreasons">' . $link . '</p>';
$outputPage->addHTML( '<p class="mw-delete-editreasons">' . $link . '</p>' );
}
$outputPage->addHTML( $form );
$deleteLogPage = new LogPage( 'delete' );
$outputPage->addHTML( Xml::element( 'h2', null, $deleteLogPage->getName()->text() ) );
LogEventsList::showLogExtract( $outputPage, 'delete', $title );