X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fspecials%2FSpecialExpandTemplates.php;h=560d75a6b1d3588a89501e4859f7376aedce80f7;hb=74426f3cf796b149f1ae445e41815bbe148640b2;hp=06eb27694410bc4467929de3a4670e961aee47ca;hpb=a8131cac85f5cf08df4af9dfea9f25f16d3432c1;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/specials/SpecialExpandTemplates.php b/includes/specials/SpecialExpandTemplates.php index 06eb276944..73ca76bb97 100644 --- a/includes/specials/SpecialExpandTemplates.php +++ b/includes/specials/SpecialExpandTemplates.php @@ -56,6 +56,7 @@ class SpecialExpandTemplates extends SpecialPage { global $wgParser; $this->setHeaders(); + $this->addHelpLink( 'Help:ExpandTemplates' ); $request = $this->getRequest(); $titleStr = $request->getText( 'wpContextTitle' ); @@ -95,8 +96,8 @@ class SpecialExpandTemplates extends SpecialPage { } $out = $this->getOutput(); - $out->addWikiMsg( 'expand_templates_intro' ); - $out->addHTML( $this->makeForm( $titleStr, $input ) ); + + $this->makeForm( $titleStr, $input ); if ( $output !== false ) { if ( $this->generateXML && strlen( $output ) > 0 ) { @@ -107,7 +108,7 @@ class SpecialExpandTemplates extends SpecialPage { if ( $this->removeNowiki ) { $tmp = preg_replace( - array( '_<nowiki>_', '_</nowiki>_', '_<nowiki */>_' ), + [ '_<nowiki>_', '_</nowiki>_', '_<nowiki */>_' ], '', $tmp ); @@ -130,6 +131,22 @@ class SpecialExpandTemplates extends SpecialPage { } } + /** + * Callback for the HTMLForm used in self::makeForm. + * Checks, if the input was given, and if not, returns a fatal Status + * object with an error message. + * + * @param array $values The values submitted to the HTMLForm + * @return Status + */ + public function onSubmitInput( array $values ) { + $status = Status::newGood(); + if ( !strlen( $values['input'] ) ) { + $status = Status::newFatal( 'expand_templates_input_missing' ); + } + return $status; + } + /** * Generate a form allowing users to enter information * @@ -138,69 +155,62 @@ class SpecialExpandTemplates extends SpecialPage { * @return string */ private function makeForm( $title, $input ) { - $self = $this->getPageTitle(); - $request = $this->getRequest(); - $user = $this->getUser(); - - $form = Xml::openElement( - 'form', - array( 'method' => 'post', 'action' => $self->getLocalUrl() ) - ); - $form .= "
" . $this->msg( 'expandtemplates' )->escaped() . "\n"; - - $form .= '

' . Xml::inputLabel( - $this->msg( 'expand_templates_title' )->plain(), - 'wpContextTitle', - 'contexttitle', - 60, - $title, - array( 'autofocus' => '', 'class' => 'mw-ui-input-inline' ) - ) . '

'; - $form .= '

' . Xml::label( - $this->msg( 'expand_templates_input' )->text(), - 'input' - ) . '

'; - $form .= Xml::textarea( - 'wpInput', - $input, - 10, - 10, - array( 'id' => 'input' ) - ); - - $form .= '

' . Xml::checkLabel( - $this->msg( 'expand_templates_remove_comments' )->text(), - 'wpRemoveComments', - 'removecomments', - $this->removeComments - ) . '

'; - $form .= '

' . Xml::checkLabel( - $this->msg( 'expand_templates_remove_nowiki' )->text(), - 'wpRemoveNowiki', - 'removenowiki', - $this->removeNowiki - ) . '

'; - $form .= '

' . Xml::checkLabel( - $this->msg( 'expand_templates_generate_xml' )->text(), - 'wpGenerateXml', - 'generate_xml', - $this->generateXML - ) . '

'; - $form .= '

' . Xml::checkLabel( - $this->msg( 'expand_templates_generate_rawhtml' )->text(), - 'wpGenerateRawHtml', - 'generate_rawhtml', - $this->generateRawHtml - ) . '

'; - $form .= '

' . Xml::submitButton( - $this->msg( 'expand_templates_ok' )->text(), - array( 'accesskey' => 's' ) - ) . '

'; - $form .= "
\n"; - $form .= Html::hidden( 'wpEditToken', $user->getEditToken( '', $request ) ); - $form .= Xml::closeElement( 'form' ); - - return $form; + $fields = [ + 'contexttitle' => [ + 'type' => 'text', + 'label' => $this->msg( 'expand_templates_title' )->plain(), + 'name' => 'wpContextTitle', + 'id' => 'contexttitle', + 'size' => 60, + 'default' => $title, + 'autofocus' => true, + ], + 'input' => [ + 'type' => 'textarea', + 'name' => 'wpInput', + 'label' => $this->msg( 'expand_templates_input' )->text(), + 'rows' => 10, + 'default' => $input, + 'id' => 'input', + 'useeditfont' => true, + ], + 'removecomments' => [ + 'type' => 'check', + 'label' => $this->msg( 'expand_templates_remove_comments' )->text(), + 'name' => 'wpRemoveComments', + 'id' => 'removecomments', + 'default' => $this->removeComments, + ], + 'removenowiki' => [ + 'type' => 'check', + 'label' => $this->msg( 'expand_templates_remove_nowiki' )->text(), + 'name' => 'wpRemoveNowiki', + 'id' => 'removenowiki', + 'default' => $this->removeNowiki, + ], + 'generate_xml' => [ + 'type' => 'check', + 'label' => $this->msg( 'expand_templates_generate_xml' )->text(), + 'name' => 'wpGenerateXml', + 'id' => 'generate_xml', + 'default' => $this->generateXML, + ], + 'generate_rawhtml' => [ + 'type' => 'check', + 'label' => $this->msg( 'expand_templates_generate_rawhtml' )->text(), + 'name' => 'wpGenerateRawHtml', + 'id' => 'generate_rawhtml', + 'default' => $this->generateRawHtml, + ], + ]; + + $form = HTMLForm::factory( 'ooui', $fields, $this->getContext() ); + $form + ->setSubmitTextMsg( 'expand_templates_ok' ) + ->setWrapperLegendMsg( 'expandtemplates' ) + ->setHeaderText( $this->msg( 'expand_templates_intro' )->parse() ) + ->setSubmitCallback( [ $this, 'onSubmitInput' ] ) + ->showAlways(); } /** @@ -217,7 +227,11 @@ class SpecialExpandTemplates extends SpecialPage { $output, 10, 10, - array( 'id' => 'output', 'readonly' => 'readonly' ) + [ + 'id' => 'output', + 'readonly' => 'readonly', + 'class' => 'mw-editfont-' . $this->getUser()->getOption( 'editfont' ) + ] ); return $out; @@ -254,13 +268,13 @@ class SpecialExpandTemplates extends SpecialPage { $user = $this->getUser(); // To prevent cross-site scripting attacks, don't show the preview if raw HTML is - // allowed and a valid edit token is not provided (bug 71111). However, MediaWiki + // allowed and a valid edit token is not provided (T73111). However, MediaWiki // does not currently provide logged-out users with CSRF protection; in that case, // do not show the preview unless anonymous editing is allowed. if ( $user->isAnon() && !$user->isAllowed( 'edit' ) ) { - $error = array( 'expand_templates_preview_fail_html_anon' ); + $error = [ 'expand_templates_preview_fail_html_anon' ]; } elseif ( !$user->matchEditToken( $request->getVal( 'wpEditToken' ), '', $request ) ) { - $error = array( 'expand_templates_preview_fail_html' ); + $error = [ 'expand_templates_preview_fail_html' ]; } else { $error = false; } @@ -271,11 +285,11 @@ class SpecialExpandTemplates extends SpecialPage { } } - $out->addHTML( Html::openElement( 'div', array( + $out->addHTML( Html::openElement( 'div', [ 'class' => 'mw-content-' . $lang->getDir(), 'dir' => $lang->getDir(), 'lang' => $lang->getHtmlCode(), - ) ) ); + ] ) ); $out->addParserOutputContent( $pout ); $out->addHTML( Html::closeElement( 'div' ) ); $out->setCategoryLinks( $pout->getCategories() );