Merge "Drop zh-tw message "saveprefs""
[lhc/web/wiklou.git] / includes / widget / ComplexTitleInputWidget.php
1 <?php
2 /**
3 * MediaWiki Widgets – ComplexTitleInputWidget class.
4 *
5 * @copyright 2011-2015 MediaWiki Widgets Team and others; see AUTHORS.txt
6 * @license The MIT License (MIT); see LICENSE.txt
7 */
8 namespace MediaWiki\Widget;
9
10 /**
11 * Complex title input widget.
12 */
13 class ComplexTitleInputWidget extends \OOUI\Widget {
14
15 protected $namespace = null;
16 protected $title = null;
17
18 /**
19 * Like TitleInputWidget, but the namespace has to be input through a separate dropdown field.
20 *
21 * @param array $config Configuration options
22 * @param array $config['namespace'] Configuration for the NamespaceInputWidget dropdown with list
23 * of namespaces
24 * @param array $config['title'] Configuration for the TitleInputWidget text field
25 */
26 public function __construct( array $config = array() ) {
27 // Configuration initialization
28 $config = array_merge(
29 array(
30 'namespace' => array(),
31 'title' => array(),
32 ),
33 $config
34 );
35
36 // Parent constructor
37 parent::__construct( $config );
38
39 // Properties
40 $this->config = $config;
41 $this->namespace = new NamespaceInputWidget( $config['namespace'] );
42 $this->title = new TitleInputWidget( array_merge(
43 $config['title'],
44 array(
45 // The inner TitleInputWidget shouldn't be infusable, only the ComplexTitleInputWidget itself can be.
46 'infusable' => false,
47 'relative' => true,
48 'namespace' => isset( $config['namespace']['value'] ) ? $config['namespace']['value'] : null,
49 )
50 ) );
51
52 // Initialization
53 $this
54 ->addClasses( array( 'mw-widget-complexTitleInputWidget' ) )
55 ->appendContent( $this->namespace, $this->title );
56 }
57
58 protected function getJavaScriptClassName() {
59 return 'mw.widgets.ComplexTitleInputWidget';
60 }
61
62 public function getConfig( &$config ) {
63 $config['namespace'] = $this->config['namespace'];
64 $config['title'] = $this->config['title'];
65 return parent::getConfig( $config );
66 }
67 }