X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FEditPage.php;h=d1e9435b8d3ec0c60a61f412382d363bc4363fb7;hb=982f7637ceb0f81c3897e72f7e8f916ba676a5ce;hp=4451867ea542a43b30c2df0fd5c7e634cc071cad;hpb=c15f569fcec998b0a77a22a7970abfcb6a394d79;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/EditPage.php b/includes/EditPage.php index 4451867ea5..d1e9435b8d 100644 --- a/includes/EditPage.php +++ b/includes/EditPage.php @@ -3064,9 +3064,51 @@ class EditPage { ]; } + /** + * Standard summary input and label (wgSummary), abstracted so EditPage + * subclasses may reorganize the form. + * Note that you do not need to worry about the label's for=, it will be + * inferred by the id given to the input. You can remove them both by + * passing [ 'id' => false ] to $userInputAttrs. + * + * @deprecated since 1.30 Use getSummaryInputWidget() instead + * @param string $summary The value of the summary input + * @param string $labelText The html to place inside the label + * @param array $inputAttrs Array of attrs to use on the input + * @param array $spanLabelAttrs Array of attrs to use on the span inside the label + * @return array An array in the format [ $label, $input ] + */ + public function getSummaryInput( $summary = "", $labelText = null, + $inputAttrs = null, $spanLabelAttrs = null + ) { + wfDeprecated( __METHOD__, '1.30' ); + $inputAttrs = $this->getSummaryInputAttributes( $inputAttrs ); + $inputAttrs += Linker::tooltipAndAccesskeyAttribs( 'summary' ); + + $spanLabelAttrs = ( is_array( $spanLabelAttrs ) ? $spanLabelAttrs : [] ) + [ + 'class' => $this->missingSummary ? 'mw-summarymissed' : 'mw-summary', + 'id' => "wpSummaryLabel" + ]; + + $label = null; + if ( $labelText ) { + $label = Xml::tags( + 'label', + $inputAttrs['id'] ? [ 'for' => $inputAttrs['id'] ] : null, + $labelText + ); + $label = Xml::tags( 'span', $spanLabelAttrs, $label ); + } + + $input = Html::input( 'wpSummary', $summary, 'text', $inputAttrs ); + + return [ $label, $input ]; + } + /** * Builds a standard summary input with a label. * + * @deprecated since 1.30 Use getSummaryInputWidget() instead * @param string $summary The value of the summary input * @param string $labelText The html to place inside the label * @param array $inputAttrs Array of attrs to use on the input @@ -3074,6 +3116,20 @@ class EditPage { * @return OOUI\FieldLayout OOUI FieldLayout with Label and Input */ function getSummaryInputOOUI( $summary = "", $labelText = null, $inputAttrs = null ) { + wfDeprecated( __METHOD__, '1.30' ); + $this->getSummaryInputWidget( $summary, $labelText, $inputAttrs ); + } + + /** + * Builds a standard summary input with a label. + * + * @param string $summary The value of the summary input + * @param string $labelText The html to place inside the label + * @param array $inputAttrs Array of attrs to use on the input + * + * @return OOUI\FieldLayout OOUI FieldLayout with Label and Input + */ + function getSummaryInputWidget( $summary = "", $labelText = null, $inputAttrs = null ) { $inputAttrs = OOUI\Element::configFromHtmlAttributes( $this->getSummaryInputAttributes( $inputAttrs ) ); @@ -3122,7 +3178,7 @@ class EditPage { } $labelText = $this->context->msg( $isSubjectPreview ? 'subject' : 'summary' )->parse(); - $wgOut->addHTML( $this->getSummaryInputOOUI( + $wgOut->addHTML( $this->getSummaryInputWidget( $summary, $labelText, [ 'class' => $summaryClass ] @@ -3165,7 +3221,7 @@ class EditPage { $wgOut->addHTML( Html::hidden( 'wpStarttime', $this->starttime ) ); $wgOut->addHTML( Html::hidden( 'wpEdittime', $this->edittime ) ); $wgOut->addHTML( Html::hidden( 'editRevId', $this->editRevId ) ); - $wgOut->addHTML( Html::hidden( 'wpScrolltop', $this->scrolltop ) ); + $wgOut->addHTML( Html::hidden( 'wpScrolltop', $this->scrolltop, [ 'id' => 'wpScrolltop' ] ) ); if ( !$this->checkUnicodeCompliantBrowser() ) { $wgOut->addHTML( Html::hidden( 'safemode', '1' ) ); @@ -3537,7 +3593,7 @@ class EditPage { $wgOut->addHTML( $this->getSummaryPreview( false, $this->summary ) ); } - $checkboxes = $this->getCheckboxesOOUI( + $checkboxes = $this->getCheckboxesWidget( $tabindex, [ 'minor' => $this->minoredit, 'watch' => $this->watchthis ] ); @@ -4125,6 +4181,7 @@ class EditPage { * Returns an array of html code of the following checkboxes old style: * minor and watch * + * @deprecated since 1.30 Use getCheckboxesWidget() or getCheckboxesDefinition() instead * @param int &$tabindex Current tabindex * @param array $checked See getCheckboxesDefinition() * @return array @@ -4180,21 +4237,34 @@ class EditPage { } /** - * Returns an array of html code of the following checkboxes: - * minor and watch + * Returns an array of checkboxes for the edit form, including 'minor' and 'watch' checkboxes and + * any other added by extensions. * + * @deprecated since 1.30 Use getCheckboxesWidget() or getCheckboxesDefinition() instead * @param int &$tabindex Current tabindex * @param array $checked Array of checkbox => bool, where bool indicates the checked * status of the checkbox * - * @return array + * @return array Associative array of string keys to OOUI\FieldLayout instances */ public function getCheckboxesOOUI( &$tabindex, $checked ) { + return $this->getCheckboxesWidget( $tabindex, $checked ); + } + + /** + * Returns an array of checkboxes for the edit form, including 'minor' and 'watch' checkboxes and + * any other added by extensions. + * + * @param int &$tabindex Current tabindex + * @param array $checked Array of checkbox => bool, where bool indicates the checked + * status of the checkbox + * + * @return array Associative array of string keys to OOUI\FieldLayout instances + */ + public function getCheckboxesWidget( &$tabindex, $checked ) { $checkboxes = []; $checkboxesDef = $this->getCheckboxesDefinition( $checked ); - $origTabindex = $tabindex; - foreach ( $checkboxesDef as $name => $options ) { $legacyName = isset( $options['legacy-name'] ) ? $options['legacy-name'] : $name; @@ -4207,9 +4277,6 @@ class EditPage { if ( isset( $options['title-message'] ) ) { $title = $this->context->msg( $options['title-message'] )->text(); } - if ( isset( $options['label-id'] ) ) { - $labelAttribs['id'] = $options['label-id']; - } $checkboxes[ $legacyName ] = new OOUI\FieldLayout( new OOUI\CheckboxInputWidget( [ @@ -4233,7 +4300,19 @@ class EditPage { // Backwards-compatibility hack to run the EditPageBeforeEditChecks hook. It's important, // people have used it for the weirdest things completely unrelated to checkboxes... // And if we're gonna run it, might as well allow its legacy checkboxes to be shown. - $legacyCheckboxes = $this->getCheckboxes( $origTabindex, $checked ); + $legacyCheckboxes = []; + if ( !$this->isNew ) { + $legacyCheckboxes['minor'] = ''; + } + $legacyCheckboxes['watch'] = ''; + // Copy new-style checkboxes into an old-style structure + foreach ( $checkboxes as $name => $oouiLayout ) { + $legacyCheckboxes[$name] = (string)$oouiLayout; + } + // Avoid PHP 7.1 warning of passing $this by reference + $ep = $this; + Hooks::run( 'EditPageBeforeEditChecks', [ &$ep, &$legacyCheckboxes, &$tabindex ], '1.29' ); + // Copy back any additional old-style checkboxes into the new-style structure foreach ( $legacyCheckboxes as $name => $html ) { if ( $html && !isset( $checkboxes[$name] ) ) { $checkboxes[$name] = new OOUI\Widget( [ 'content' => new OOUI\HtmlSnippet( $html ) ] );