From 2713039474d366505cd480d360a3ac1d0edb728b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bartosz=20Dziewo=C5=84ski?= Date: Sun, 26 Jul 2015 22:54:45 +0200 Subject: [PATCH] HTMLTitleTextField: Support 'relative' config option Uses: * SpecialExport: I2b3524e61efc618aa2b7484134bba562d5f9011c * SpecialRandomInCategory: I4c0b11e2ae0cfa906bbde77fc89901cf88a9a5bd Change-Id: Ia7c773fee34fd8809c8683c62d700f5373ceb45c --- includes/htmlform/HTMLTitleTextField.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/includes/htmlform/HTMLTitleTextField.php b/includes/htmlform/HTMLTitleTextField.php index e1bc1a0cb3..6e5242c792 100644 --- a/includes/htmlform/HTMLTitleTextField.php +++ b/includes/htmlform/HTMLTitleTextField.php @@ -11,6 +11,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 * @@ -20,6 +21,7 @@ class HTMLTitleTextField extends HTMLTextField { public function __construct( $params ) { $params += array( 'namespace' => false, + 'relative' => false, 'creatable' => false, 'exists' => false, ); @@ -29,7 +31,14 @@ class HTMLTitleTextField extends HTMLTextField { public function 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(); @@ -60,7 +69,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 ); } } -- 2.20.1