summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/Translate/tag/SpecialPageTranslationDeletePage.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/Translate/tag/SpecialPageTranslationDeletePage.php')
-rw-r--r--www/wiki/extensions/Translate/tag/SpecialPageTranslationDeletePage.php235
1 files changed, 109 insertions, 126 deletions
diff --git a/www/wiki/extensions/Translate/tag/SpecialPageTranslationDeletePage.php b/www/wiki/extensions/Translate/tag/SpecialPageTranslationDeletePage.php
index 713393da..168d574a 100644
--- a/www/wiki/extensions/Translate/tag/SpecialPageTranslationDeletePage.php
+++ b/www/wiki/extensions/Translate/tag/SpecialPageTranslationDeletePage.php
@@ -4,7 +4,7 @@
*
* @file
* @author Niklas Laxström
- * @license GPL-2.0+
+ * @license GPL-2.0-or-later
*/
/**
@@ -63,7 +63,7 @@ class SpecialPageTranslationDeletePage extends SpecialPage {
// Yes, the use of getVal() and getText() is wanted, see bug T22365
$this->text = $request->getVal( 'wpTitle', $par );
$this->title = Title::newFromText( $this->text );
- $this->reason = $request->getText( 'reason' );
+ $this->reason = $request->getText( 'wpReason' );
// Checkboxes that default being checked are tricky
$this->doSubpages = $request->getBool( 'subpages', !$request->wasPosted() );
@@ -176,57 +176,33 @@ class SpecialPageTranslationDeletePage extends SpecialPage {
protected function showForm() {
$this->getOutput()->addWikiMsg( 'pt-deletepage-intro' );
- $subaction = array( 'name' => 'subaction' );
- $formParams = array(
- 'method' => 'post',
- 'action' => $this->getPageTitle( $this->text )->getLocalURL()
- );
-
- $form = array();
- $form[] = Xml::fieldset( $this->msg( 'pt-deletepage-any-legend' )->text() );
- $form[] = Html::openElement( 'form', $formParams );
- $form[] = Html::hidden( 'wpEditToken', $this->getUser()->getEditToken() );
- $this->addInputLabel(
- $form,
- $this->msg( 'pt-deletepage-current' )->text(),
- 'wpTitle',
- 30,
- $this->text
- );
- $this->addInputLabel(
- $form,
- $this->msg( 'pt-deletepage-reason' )->text(),
- 'reason',
- 60,
- $this->reason
- );
- $form[] = Xml::submitButton(
- $this->msg( 'pt-deletepage-action-check' )->text(),
- $subaction
- );
- $form[] = Xml::closeElement( 'form' );
- $form[] = Xml::closeElement( 'fieldset' );
- $this->getOutput()->addHTML( implode( "\n", $form ) );
- }
-
- /**
- * Shortcut for keeping the code at least a bit readable. Adds label and
- * input into $form array.
- *
- * @param array $form \list{String} Array where input element and label is appended.
- * @param string $label Label text.
- * @param string $name Name attribute.
- * @param int|bool $size Size attribute of the input element. Default false.
- * @param string|bool $text Text of the value attribute. Default false.
- * @param array $attribs Extra attributes. Default empty array.
- */
- protected function addInputLabel( &$form, $label, $name, $size = false, $text = false,
- array $attribs = array()
- ) {
- $br = Html::element( 'br' );
- list( $label, $input ) = Xml::inputLabelSep( $label, $name, $name, $size, $text, $attribs );
- $form[] = $label . $br;
- $form[] = $input . $br;
+ $formDescriptor = [
+ 'wpTitle' => [
+ 'type' => 'text',
+ 'name' => 'wpTitle',
+ 'label' => $this->msg( 'pt-deletepage-current' )->text(),
+ 'size' => 30,
+ 'default' => $this->text,
+ ],
+ 'wpReason' => [
+ 'type' => 'text',
+ 'name' => 'wpReason',
+ 'label' => $this->msg( 'pt-deletepage-reason' )->text(),
+ 'size' => 60,
+ 'default' => $this->reason,
+ ]
+ ];
+
+ $htmlForm = HTMLForm::factory( 'ooui', $formDescriptor, $this->getContext() );
+ $htmlForm
+ ->addHiddenField( 'wpEditToken', $this->getUser()->getEditToken() )
+ ->setMethod( 'post' )
+ ->setAction( $this->getPageTitle( $this->text )->getLocalURL() )
+ ->setSubmitName( 'subaction' )
+ ->setSubmitTextMsg( 'pt-deletepage-action-check' )
+ ->setWrapperLegendMsg( 'pt-deletepage-any-legend' )
+ ->prepareForm()
+ ->displayForm( false );
}
/**
@@ -235,32 +211,40 @@ class SpecialPageTranslationDeletePage extends SpecialPage {
*/
protected function showConfirmation() {
$out = $this->getOutput();
+ $count = 0;
$out->addWikiMsg( 'pt-deletepage-intro' );
- $count = 1; // Base page
-
$out->wrapWikiMsg( '== $1 ==', 'pt-deletepage-list-pages' );
if ( !$this->singleLanguage() ) {
- $this->printChangeLine( $this->title );
+ $count++;
+ TranslateUtils::addWikiTextAsInterface(
+ $out,
+ $this->getChangeLine( $this->title )
+ );
}
$out->wrapWikiMsg( '=== $1 ===', 'pt-deletepage-list-translation' );
$translationPages = $this->getTranslationPages();
+ $lines = [];
foreach ( $translationPages as $old ) {
$count++;
- $this->printChangeLine( $old );
+ $lines[] = $this->getChangeLine( $old );
}
+ TranslateUtils::addWikiTextAsInterface( $out, implode( "\n", $lines ) );
$out->wrapWikiMsg( '=== $1 ===', 'pt-deletepage-list-section' );
$sectionPages = $this->getSectionPages();
+ $lines = [];
foreach ( $sectionPages as $old ) {
$count++;
- $this->printChangeLine( $old );
+ $lines[] = $this->getChangeLine( $old );
}
+ TranslateUtils::addWikiTextAsInterface( $out, implode( "\n", $lines ) );
$out->wrapWikiMsg( '=== $1 ===', 'pt-deletepage-list-other' );
$subpages = $this->getSubpages();
+ $lines = [];
foreach ( $subpages as $old ) {
if ( TranslatablePage::isTranslationPage( $old ) ) {
continue;
@@ -270,75 +254,75 @@ class SpecialPageTranslationDeletePage extends SpecialPage {
$count++;
}
- $this->printChangeLine( $old, $this->doSubpages );
+ $lines[] = $this->getChangeLine( $old, $this->doSubpages );
}
+ TranslateUtils::addWikiTextAsInterface( $out, implode( "\n", $lines ) );
- $out->addWikiText( "----\n" );
+ TranslateUtils::addWikiTextAsInterface( $out, "----\n" );
$out->addWikiMsg( 'pt-deletepage-list-count', $this->getLanguage()->formatNum( $count ) );
- $br = Html::element( 'br' );
- $readonly = array( 'readonly' => 'readonly' );
-
- $subaction = array( 'name' => 'subaction' );
- $formParams = array(
- 'method' => 'post',
- 'action' => $this->getPageTitle( $this->text )->getLocalURL()
- );
+ $formDescriptor = [
+ 'wpTitle' => [
+ 'type' => 'text',
+ 'name' => 'wpTitle',
+ 'label' => $this->msg( 'pt-deletepage-current' )->text(),
+ 'size' => 30,
+ 'default' => $this->text,
+ 'readonly' => true,
+ ],
+ 'wpReason' => [
+ 'type' => 'text',
+ 'name' => 'wpReason',
+ 'label' => $this->msg( 'pt-deletepage-reason' )->text(),
+ 'size' => 60,
+ 'default' => $this->reason,
+ ],
+ 'subpages' => [
+ 'type' => 'check',
+ 'name' => 'subpages',
+ 'id' => 'mw-subpages',
+ 'label' => $this->msg( 'pt-deletepage-subpages' )->text(),
+ 'default' => $this->doSubpages,
+ ]
+ ];
+
+ $htmlForm = HTMLForm::factory( 'ooui', $formDescriptor, $this->getContext() );
- $form = array();
if ( $this->singleLanguage() ) {
- $form[] = Xml::fieldset( $this->msg( 'pt-deletepage-lang-legend' )->text() );
+ $htmlForm->setWrapperLegendMsg( 'pt-deletepage-lang-legend' );
} else {
- $form[] = Xml::fieldset( $this->msg( 'pt-deletepage-full-legend' )->text() );
+ $htmlForm->setWrapperLegendMsg( 'pt-deletepage-full-legend' );
}
- $form[] = Html::openElement( 'form', $formParams );
- $form[] = Html::hidden( 'wpEditToken', $this->getUser()->getEditToken() );
- $this->addInputLabel(
- $form,
- $this->msg( 'pt-deletepage-current' )->text(),
- 'wpTitle',
- 30,
- $this->text, $readonly );
- $this->addInputLabel(
- $form,
- $this->msg( 'pt-deletepage-reason' )->text(),
- 'reason',
- 60,
- $this->reason );
- $form[] = Xml::checkLabel(
- $this->msg( 'pt-deletepage-subpages' )->text(),
- 'subpages',
- 'mw-subpages',
- $this->doSubpages,
- $readonly
- ) . $br;
- $form[] = Xml::submitButton(
- $this->msg( 'pt-deletepage-action-perform' )->text(),
- $subaction
- );
- $form[] = Xml::submitButton(
- $this->msg( 'pt-deletepage-action-other' )->text(),
- $subaction
- );
- $form[] = Xml::closeElement( 'form' );
- $form[] = Xml::closeElement( 'fieldset' );
- $out->addHTML( implode( "\n", $form ) );
+
+ $htmlForm
+ ->addHiddenField( 'wpEditToken', $this->getUser()->getEditToken() )
+ ->setMethod( 'post' )
+ ->setAction( $this->getPageTitle( $this->text )->getLocalURL() )
+ ->setSubmitTextMsg( 'pt-deletepage-action-perform' )
+ ->setSubmitName( 'subaction' )
+ ->addButton( [
+ 'name' => 'subaction',
+ 'value' => $this->msg( 'pt-deletepage-action-other' )->text(),
+ ] )
+ ->prepareForm()
+ ->displayForm( false );
}
/**
- * @param $title Title
- * @param $enabled bool
+ * @param Title $title
+ * @param bool $enabled
+ * @return string One line of wikitext, without trailing newline.
*/
- protected function printChangeLine( $title, $enabled = true ) {
+ protected function getChangeLine( $title, $enabled = true ) {
if ( $enabled ) {
- $this->getOutput()->addWikiText( '* ' . $title->getPrefixedText() );
+ return '* ' . $title->getPrefixedText();
} else {
- $this->getOutput()->addWikiText( '* <s>' . $title->getPrefixedText() . '</s>' );
+ return '* <s>' . $title->getPrefixedText() . '</s>';
}
}
protected function performAction() {
- $jobs = array();
+ $jobs = [];
$target = $this->title;
$base = $this->title->getPrefixedText();
@@ -397,7 +381,7 @@ class SpecialPageTranslationDeletePage extends SpecialPage {
$this->clearMetadata();
MessageGroups::singleton()->recache();
- MessageIndexRebuildJob::newJob()->insert();
+ MessageIndexRebuildJob::newJob()->insertIntoJobQueue();
$this->getOutput()->addWikiMsg( 'pt-deletepage-started' );
}
@@ -409,22 +393,21 @@ class SpecialPageTranslationDeletePage extends SpecialPage {
TranslateMetadata::set( $groupId, 'priorityforce', false );
TranslateMetadata::set( $groupId, 'priorityreason', false );
// remove the page from aggregate groups, if present in any of them.
- $groups = MessageGroups::getAllGroups();
- foreach ( $groups as $group ) {
- if ( $group instanceof AggregateMessageGroup ) {
- $subgroups = TranslateMetadata::get( $group->getId(), 'subgroups' );
- if ( $subgroups !== false ) {
- $subgroups = explode( ',', $subgroups );
+ $aggregateGroups = MessageGroups::getGroupsByType( AggregateMessageGroup::class );
+ TranslateMetadata::preloadGroups( array_keys( $aggregateGroups ) );
+ foreach ( $aggregateGroups as $group ) {
+ $subgroups = TranslateMetadata::get( $group->getId(), 'subgroups' );
+ if ( $subgroups !== false ) {
+ $subgroups = explode( ',', $subgroups );
+ $subgroups = array_flip( $subgroups );
+ if ( isset( $subgroups[$groupId] ) ) {
+ unset( $subgroups[$groupId] );
$subgroups = array_flip( $subgroups );
- if ( isset( $subgroups[$groupId] ) ) {
- unset( $subgroups[$groupId] );
- $subgroups = array_flip( $subgroups );
- TranslateMetadata::set(
- $group->getId(),
- 'subgroups',
- implode( ',', $subgroups )
- );
- }
+ TranslateMetadata::set(
+ $group->getId(),
+ 'subgroups',
+ implode( ',', $subgroups )
+ );
}
}
}
@@ -446,7 +429,7 @@ class SpecialPageTranslationDeletePage extends SpecialPage {
*/
protected function getTranslationPages() {
if ( $this->singleLanguage() ) {
- return array( $this->title );
+ return [ $this->title ];
}
if ( !isset( $this->translationPages ) ) {