X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=includes%2Fspecials%2FSpecialPageLanguage.php;h=a68f08fd9a1a48f54642a60e5afc5dc36863f6eb;hp=db05ebe587de3eac9017256e39cb6a674ef0478a;hb=802c199d0bd80ff0f4d730c61fd58cbf08a52d8d;hpb=49748181dd56ec97e7ba7c13e684a16abceb3cc0 diff --git a/includes/specials/SpecialPageLanguage.php b/includes/specials/SpecialPageLanguage.php index db05ebe587..a68f08fd9a 100644 --- a/includes/specials/SpecialPageLanguage.php +++ b/includes/specials/SpecialPageLanguage.php @@ -49,12 +49,20 @@ class SpecialPageLanguage extends FormSpecialPage { protected function getFormFields() { // Get default from the subpage of Special page $defaultName = $this->par; + $title = $defaultName ? Title::newFromText( $defaultName ) : null; + if ( $title ) { + $defaultPageLanguage = + ContentHandler::getForTitle( $title )->getPageLanguage( $title ); + $hasCustomLanguageSet = !$defaultPageLanguage->equals( $title->getPageLanguage() ); + } else { + $hasCustomLanguageSet = false; + } $page = []; $page['pagename'] = [ 'type' => 'title', 'label-message' => 'pagelang-name', - 'default' => $defaultName, + 'default' => $title ? $title->getPrefixedText() : $defaultName, 'autofocus' => $defaultName === null, 'exists' => true, ]; @@ -68,7 +76,7 @@ class SpecialPageLanguage extends FormSpecialPage { 'id' => 'mw-pl-options', 'type' => 'radio', 'options' => $selectoptions, - 'default' => 1 + 'default' => $hasCustomLanguageSet ? 2 : 1 ]; // Building a language selector @@ -86,7 +94,9 @@ class SpecialPageLanguage extends FormSpecialPage { 'type' => 'select', 'options' => $options, 'label-message' => 'pagelang-language', - 'default' => $this->getConfig()->get( 'LanguageCode' ), + 'default' => $title ? + $title->getPageLanguage()->getCode() : + $this->getConfig()->get( 'LanguageCode' ), ]; // Allow user to enter a comment explaining the change @@ -135,8 +145,18 @@ class SpecialPageLanguage extends FormSpecialPage { return Status::newFatal( $ex->getMessageObject() ); } + // Check permissions and make sure the user has permission to edit the page + $errors = $title->getUserPermissionsErrors( 'edit', $this->getUser() ); + + if ( $errors ) { + $out = $this->getOutput(); + $wikitext = $out->formatPermissionsErrorMessage( $errors ); + // Hack to get our wikitext parsed + return Status::newFatal( new RawMessage( '$1', [ $wikitext ] ) ); + } + // Url to redirect to after the operation - $this->goToUrl = $title->getFullURL( + $this->goToUrl = $title->getFullUrlForRedirect( $title->isRedirect() ? [ 'redirect' => 'no' ] : [] );