Do not show useless form at Special:ChangeContentModel
authorRicordisamoa <ricordisamoa@openmailbox.org>
Wed, 4 May 2016 15:35:59 +0000 (17:35 +0200)
committerRicordisamoa <ricordisamoa@openmailbox.org>
Wed, 4 May 2016 15:42:06 +0000 (17:42 +0200)
If the choosen title cannot be converted to any of the available
models, show an error page instead of an empty and confusing dropdown
field asking for the new content model.

Change-Id: Idc7372a8870f98aa8148592385f3a837f16886f0

includes/specials/SpecialChangeContentModel.php
languages/i18n/en.json
languages/i18n/qqq.json

index ee9f665..c7a650c 100644 (file)
@@ -84,12 +84,20 @@ class SpecialChangeContentModel extends FormSpecialPage {
                        ],
                ];
                if ( $this->title ) {
+                       $options = $this->getOptionsForTitle( $this->title );
+                       if ( empty( $options ) ) {
+                               throw new ErrorPageError(
+                                       'changecontentmodel-emptymodels-title',
+                                       'changecontentmodel-emptymodels-text',
+                                       $this->title->getPrefixedText()
+                               );
+                       }
                        $fields['pagetitle']['readonly'] = true;
                        $fields += [
                                'model' => [
                                        'type' => 'select',
                                        'name' => 'model',
-                                       'options' => $this->getOptionsForTitle( $this->title ),
+                                       'options' => $options,
                                        'label-message' => 'changecontentmodel-model-label'
                                ],
                                'reason' => [
index aacf623..0936079 100644 (file)
        "changecontentmodel-success-text": "The content type of [[:$1]] has been changed.",
        "changecontentmodel-cannot-convert": "The content on [[:$1]] cannot be converted to a type of $2.",
        "changecontentmodel-nodirectediting": "The $1 content model does not support direct editing",
+       "changecontentmodel-emptymodels-title": "No content models available",
+       "changecontentmodel-emptymodels-text": "The content on [[:$1]] cannot be converted to any type.",
        "log-name-contentmodel": "Content model change log",
        "log-description-contentmodel": "Events related to the content models of a page",
        "logentry-contentmodel-new": "$1 {{GENDER:$2|created}} the page $3 using a non-default content model \"$5\"",
index ed5c2b4..413b333 100644 (file)
        "changecontentmodel-success-text": "Message telling user that their change has been successfully done.\n* $1 - Target page title",
        "changecontentmodel-cannot-convert": "Error message shown if the content model cannot be changed to the specified type. $1 is the page title, $2 is the localized content model name.",
        "changecontentmodel-nodirectediting": "Error message shown if the content model does not allow for direct editing. $1 is the localized name of the content model.",
+       "changecontentmodel-emptymodels-title": "Title of the error page shown if the content model cannot be changed to any of the available types.",
+       "changecontentmodel-emptymodels-text": "Text of the error page shown if the content model cannot be changed to any of the available types. $1 is the page title.",
        "log-name-contentmodel": "{{doc-logpage}}\n\nTitle of [[Special:Log/contentmodel]].",
        "log-description-contentmodel": "Text in [[Special:Log/contentmodel]].",
        "logentry-contentmodel-new": "{{Logentry}}\n$4 is not used.\n$5 is the new content model.",