X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=includes%2FEditPage.php;h=2860664e4ca59aa0edcc942e9925f46e1825fe76;hp=49341c5e7e8546c9d9033c8e1d6355bc63296f03;hb=5910fe9d9bdfdef20050694bddc640bcb5ae692c;hpb=70d904b5bd04deb758272fc897d52e83a4141104 diff --git a/includes/EditPage.php b/includes/EditPage.php index 49341c5e7e..2860664e4c 100644 --- a/includes/EditPage.php +++ b/includes/EditPage.php @@ -336,7 +336,7 @@ class EditPage { /** @var string */ public $edittime = ''; - /** @var integer */ + /** @var int */ private $editRevId = null; /** @var string */ @@ -413,11 +413,6 @@ class EditPage { */ private $isOldRev = false; - /** - * @var bool Whether OOUI should be enabled here - */ - private $oouiEnabled = false; - /** * @param Article $article */ @@ -431,8 +426,6 @@ class EditPage { $handler = ContentHandler::getForModelID( $this->contentModel ); $this->contentFormat = $handler->getDefaultFormat(); - - $this->oouiEnabled = $this->context->getConfig()->get( 'OOUIEditPage' ); } /** @@ -485,10 +478,11 @@ class EditPage { /** * Check if the edit page is using OOUI controls - * @return bool + * @return bool Always true + * @deprecated since 1.30 */ public function isOouiEnabled() { - return $this->oouiEnabled; + return true; } /** @@ -858,9 +852,6 @@ class EditPage { public function importFormData( &$request ) { global $wgContLang, $wgUser; - # Allow users to change the mode for testing - $this->oouiEnabled = $request->getFuzzyBool( 'ooui', $this->oouiEnabled ); - # Section edit can come from either the form or a link $this->section = $request->getVal( 'wpSection', $request->getVal( 'section' ) ); @@ -1726,7 +1717,7 @@ class EditPage { * - spam (string): Spam string from content if any spam is detected by * matchSpamRegex. * - sectionanchor (string): Section anchor for a section save. - * - nullEdit (boolean): Set if doEditContent is OK. True if null edit, + * - nullEdit (bool): Set if doEditContent is OK. True if null edit, * false otherwise. * - redirect (bool): Set if doEditContent is OK. True if resulting * revision is a redirect. @@ -2667,7 +2658,7 @@ class EditPage { $wgOut->addHTML( Html::openElement( 'form', [ - 'class' => $this->oouiEnabled ? 'mw-editform-ooui' : 'mw-editform-legacy', + 'class' => 'mw-editform', 'id' => self::EDITFORM_ID, 'name' => self::EDITFORM_ID, 'method' => 'post', @@ -2710,7 +2701,7 @@ class EditPage { if ( $this->wasDeletedSinceLastEdit() && 'save' == $this->formtype ) { $username = $this->lastDelete->user_name; - $comment = $this->lastDelete->log_comment; + $comment = CommentStore::newKey( 'log_comment' )->getComment( $this->lastDelete )->text; // It is better to not parse the comment at all than to have templates expanded in the middle // TODO: can the checkLabel be moved outside of the div so that wrapWikiMsg could be used? @@ -2767,13 +2758,7 @@ class EditPage { $wgOut->addHTML( Html::hidden( 'format', $this->contentFormat ) ); $wgOut->addHTML( Html::hidden( 'model', $this->contentModel ) ); - // Preserve &ooui=1 / &ooui=0 from URL parameters after submitting the page for preview - $wgOut->addHTML( Html::hidden( 'ooui', $this->oouiEnabled ? '1' : '0' ) ); - - // following functions will need OOUI, enable it only once; here. - if ( $this->oouiEnabled ) { - $wgOut->enableOOUI(); - } + $wgOut->enableOOUI(); if ( $this->section == 'new' ) { $this->showSummaryInput( true, $this->summary ); @@ -3080,47 +3065,6 @@ 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. - * - * @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 - ) { - $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 ]; - } - - /** - * Same as self::getSummaryInput, but uses OOUI, instead of plain HTML. * Builds a standard summary input with a label. * * @param string $summary The value of the summary input @@ -3178,20 +3122,11 @@ class EditPage { } $labelText = $this->context->msg( $isSubjectPreview ? 'subject' : 'summary' )->parse(); - if ( $this->oouiEnabled ) { - $wgOut->addHTML( $this->getSummaryInputOOUI( + $wgOut->addHTML( $this->getSummaryInputOOUI( $summary, $labelText, [ 'class' => $summaryClass ] ) ); - } else { - list( $label, $input ) = $this->getSummaryInput( - $summary, - $labelText, - [ 'class' => $summaryClass ] - ); - $wgOut->addHTML( "{$label} {$input}" ); - } } /** @@ -3230,7 +3165,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' ) ); @@ -3602,19 +3537,11 @@ class EditPage { $wgOut->addHTML( $this->getSummaryPreview( false, $this->summary ) ); } - if ( $this->oouiEnabled ) { - $checkboxes = $this->getCheckboxesOOUI( - $tabindex, - [ 'minor' => $this->minoredit, 'watch' => $this->watchthis ] - ); - $checkboxesHTML = new OOUI\HorizontalLayout( [ 'items' => $checkboxes ] ); - } else { - $checkboxes = $this->getCheckboxes( - $tabindex, - [ 'minor' => $this->minoredit, 'watch' => $this->watchthis ] - ); - $checkboxesHTML = implode( $checkboxes, "\n" ); - } + $checkboxes = $this->getCheckboxesOOUI( + $tabindex, + [ 'minor' => $this->minoredit, 'watch' => $this->watchthis ] + ); + $checkboxesHTML = new OOUI\HorizontalLayout( [ 'items' => $checkboxes ] ); $wgOut->addHTML( "
" . $checkboxesHTML . "
\n" ); @@ -3704,23 +3631,15 @@ class EditPage { } elseif ( $this->getContextTitle()->isRedirect() ) { $cancelParams['redirect'] = 'no'; } - if ( $this->oouiEnabled ) { - return new OOUI\ButtonWidget( [ - 'id' => 'mw-editform-cancel', - 'href' => $this->getContextTitle()->getLinkUrl( $cancelParams ), - 'label' => new OOUI\HtmlSnippet( $this->context->msg( 'cancel' )->parse() ), - 'framed' => false, - 'infusable' => true, - 'flags' => 'destructive', - ] ); - } else { - return MediaWikiServices::getInstance()->getLinkRenderer()->makeKnownLink( - $this->getContextTitle(), - new HtmlArmor( $this->context->msg( 'cancel' )->parse() ), - Html::buttonAttributes( [ 'id' => 'mw-editform-cancel' ], [ 'mw-ui-quiet' ] ), - $cancelParams - ); - } + + return new OOUI\ButtonWidget( [ + 'id' => 'mw-editform-cancel', + 'href' => $this->getContextTitle()->getLinkUrl( $cancelParams ), + 'label' => new OOUI\HtmlSnippet( $this->context->msg( 'cancel' )->parse() ), + 'framed' => false, + 'infusable' => true, + 'flags' => 'destructive', + ] ); } /** @@ -3768,8 +3687,9 @@ class EditPage { */ protected function getLastDelete() { $dbr = wfGetDB( DB_REPLICA ); + $commentQuery = CommentStore::newKey( 'log_comment' )->getJoin(); $data = $dbr->selectRow( - [ 'logging', 'user' ], + [ 'logging', 'user' ] + $commentQuery['tables'], [ 'log_type', 'log_action', @@ -3777,11 +3697,10 @@ class EditPage { 'log_user', 'log_namespace', 'log_title', - 'log_comment', 'log_params', 'log_deleted', 'user_name' - ], [ + ] + $commentQuery['fields'], [ 'log_namespace' => $this->mTitle->getNamespace(), 'log_title' => $this->mTitle->getDBkey(), 'log_type' => 'delete', @@ -3789,7 +3708,10 @@ class EditPage { 'user_id=log_user' ], __METHOD__, - [ 'LIMIT' => 1, 'ORDER BY' => 'log_timestamp DESC' ] + [ 'LIMIT' => 1, 'ORDER BY' => 'log_timestamp DESC' ], + [ + 'user' => [ 'JOIN', 'user_id=log_user' ], + ] + $commentQuery['joins'] ); // Quick paranoid permission checks... if ( is_object( $data ) ) { @@ -3798,7 +3720,8 @@ class EditPage { } if ( $data->log_deleted & LogPage::DELETED_COMMENT ) { - $data->log_comment = $this->context->msg( 'rev-deleted-comment' )->escaped(); + $data->log_comment_text = $this->context->msg( 'rev-deleted-comment' )->escaped(); + $data->log_comment_data = null; } } @@ -4163,7 +4086,7 @@ class EditPage { * where bool indicates the checked status of the checkbox * @return array */ - protected function getCheckboxesDefinition( $checked ) { + public function getCheckboxesDefinition( $checked ) { global $wgUser; $checkboxes = []; @@ -4358,74 +4281,56 @@ class EditPage { 'name' => 'wpSave', 'tabindex' => ++$tabindex, ]; - if ( $this->oouiEnabled ) { - $saveConfig = OOUI\Element::configFromHtmlAttributes( $attribs ); - $buttons['save'] = new OOUI\ButtonInputWidget( [ - 'id' => 'wpSaveWidget', - 'inputId' => 'wpSave', - // Support: IE 6 – Use , otherwise it can't distinguish which button was clicked - 'useInputTag' => true, - 'flags' => [ 'constructive', 'primary' ], - 'label' => $buttonLabel, - 'infusable' => true, - 'type' => 'submit', - 'title' => Linker::titleAttrib( 'save' ), - 'accessKey' => Linker::accesskey( 'save' ), - ] + $saveConfig ); - } else { - $buttons['save'] = Html::submitButton( - $buttonLabel, - $attribs + Linker::tooltipAndAccesskeyAttribs( 'save' ) + [ 'id' => 'wpSave' ], - [ 'mw-ui-progressive' ] - ); - } + + $saveConfig = OOUI\Element::configFromHtmlAttributes( $attribs ); + $buttons['save'] = new OOUI\ButtonInputWidget( [ + 'id' => 'wpSaveWidget', + 'inputId' => 'wpSave', + // Support: IE 6 – Use , otherwise it can't distinguish which button was clicked + 'useInputTag' => true, + 'flags' => [ 'constructive', 'primary' ], + 'label' => $buttonLabel, + 'infusable' => true, + 'type' => 'submit', + 'title' => Linker::titleAttrib( 'save' ), + 'accessKey' => Linker::accesskey( 'save' ), + ] + $saveConfig ); $attribs = [ 'name' => 'wpPreview', 'tabindex' => ++$tabindex, ]; - if ( $this->oouiEnabled ) { - $previewConfig = OOUI\Element::configFromHtmlAttributes( $attribs ); - $buttons['preview'] = new OOUI\ButtonInputWidget( [ - 'id' => 'wpPreviewWidget', - 'inputId' => 'wpPreview', - // Support: IE 6 – Use , otherwise it can't distinguish which button was clicked - 'useInputTag' => true, - 'label' => $this->context->msg( 'showpreview' )->text(), - 'infusable' => true, - 'type' => 'submit', - 'title' => Linker::titleAttrib( 'preview' ), - 'accessKey' => Linker::accesskey( 'preview' ), - ] + $previewConfig ); - } else { - $buttons['preview'] = Html::submitButton( - $this->context->msg( 'showpreview' )->text(), - $attribs + Linker::tooltipAndAccesskeyAttribs( 'preview' ) + [ 'id' => 'wpPreview' ] - ); - } + + $previewConfig = OOUI\Element::configFromHtmlAttributes( $attribs ); + $buttons['preview'] = new OOUI\ButtonInputWidget( [ + 'id' => 'wpPreviewWidget', + 'inputId' => 'wpPreview', + // Support: IE 6 – Use , otherwise it can't distinguish which button was clicked + 'useInputTag' => true, + 'label' => $this->context->msg( 'showpreview' )->text(), + 'infusable' => true, + 'type' => 'submit', + 'title' => Linker::titleAttrib( 'preview' ), + 'accessKey' => Linker::accesskey( 'preview' ), + ] + $previewConfig ); + $attribs = [ 'name' => 'wpDiff', 'tabindex' => ++$tabindex, ]; - if ( $this->oouiEnabled ) { - $diffConfig = OOUI\Element::configFromHtmlAttributes( $attribs ); - $buttons['diff'] = new OOUI\ButtonInputWidget( [ - 'id' => 'wpDiffWidget', - 'inputId' => 'wpDiff', - // Support: IE 6 – Use , otherwise it can't distinguish which button was clicked - 'useInputTag' => true, - 'label' => $this->context->msg( 'showdiff' )->text(), - 'infusable' => true, - 'type' => 'submit', - 'title' => Linker::titleAttrib( 'diff' ), - 'accessKey' => Linker::accesskey( 'diff' ), - ] + $diffConfig ); - } else { - $buttons['diff'] = Html::submitButton( - $this->context->msg( 'showdiff' )->text(), - $attribs + Linker::tooltipAndAccesskeyAttribs( 'diff' ) + [ 'id' => 'wpDiff' ] - ); - } + + $diffConfig = OOUI\Element::configFromHtmlAttributes( $attribs ); + $buttons['diff'] = new OOUI\ButtonInputWidget( [ + 'id' => 'wpDiffWidget', + 'inputId' => 'wpDiff', + // Support: IE 6 – Use , otherwise it can't distinguish which button was clicked + 'useInputTag' => true, + 'label' => $this->context->msg( 'showdiff' )->text(), + 'infusable' => true, + 'type' => 'submit', + 'title' => Linker::titleAttrib( 'diff' ), + 'accessKey' => Linker::accesskey( 'diff' ), + ] + $diffConfig ); // Avoid PHP 7.1 warning of passing $this by reference $editPage = $this;