Merge "HTMLTitleTextField: Support 'relative' config option"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Mon, 27 Jul 2015 02:12:47 +0000 (02:12 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Mon, 27 Jul 2015 02:12:47 +0000 (02:12 +0000)
includes/htmlform/HTMLTitleTextField.php

index 2124bb1..a225c67 100644 (file)
@@ -12,6 +12,7 @@ use MediaWiki\Widget\TitleInputWidget;
  *
  * Optional parameters:
  * 'namespace' - Namespace the page must be in
+ * 'relative' - If true and 'namespace' given, strip/add the namespace from/to the title as needed
  * 'creatable' - Whether to validate the title is creatable (not a special page)
  * 'exists' - Whether to validate that the title already exists
  *
@@ -21,6 +22,7 @@ class HTMLTitleTextField extends HTMLTextField {
        public function __construct( $params ) {
                $params += array(
                        'namespace' => false,
+                       'relative' => false,
                        'creatable' => false,
                        'exists' => false,
                );
@@ -35,7 +37,14 @@ class HTMLTitleTextField extends HTMLTextField {
                        return parent::validate( $value, $alldata );
                }
                try {
-                       $title = Title::newFromTextThrow( $value );
+                       if ( !$this->mParams['relative'] ) {
+                               $title = Title::newFromTextThrow( $value );
+                       } else {
+                               // Can't use Title::makeTitleSafe(), because it doesn't throw useful exceptions
+                               global $wgContLang;
+                               $namespaceName = $wgContLang->getNsText( $this->mParams['namespace'] );
+                               $title = Title::newFromTextThrow( $namespaceName . ':' . $value );
+                       }
                } catch ( MalformedTitleException $e ) {
                        $msg = $this->msg( $e->getErrorMessage() );
                        $params = $e->getErrorMessageParameters();
@@ -66,7 +75,7 @@ class HTMLTitleTextField extends HTMLTextField {
                if ( $this->mParams['namespace'] !== false ) {
                        $params['namespace'] = $this->mParams['namespace'];
                }
-               $params['relative'] = false;
+               $params['relative'] = $this->mParams['relative'];
                return new TitleInputWidget( $params );
        }
 }