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,
];
'id' => 'mw-pl-options',
'type' => 'radio',
'options' => $selectoptions,
- 'default' => 1
+ 'default' => $hasCustomLanguageSet ? 2 : 1
];
// Building a language selector
$userLang = $this->getLanguage()->getCode();
$languages = Language::fetchLanguageNames( $userLang, 'mwfile' );
- ksort( $languages );
$options = [];
foreach ( $languages as $code => $name ) {
$options["$code - $name"] = $code;
'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
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' ] : []
);