289cc85ba4abf10e22a534faadb8506c9eb6a83e
[lhc/web/wiklou.git] / includes / widget / ExpiryInputWidget.php
1 <?php
2
3 namespace MediaWiki\Widget;
4
5 use OOUI\Widget;
6
7 /**
8 * Expiry widget.
9 *
10 * Allows the user to toggle between a precise time or enter a relative time,
11 * regardless, the value comes in as a relative time.
12 *
13 * @copyright 2018 MediaWiki Widgets Team and others; see AUTHORS.txt
14 * @license MIT
15 */
16 class ExpiryInputWidget extends Widget {
17
18 /**
19 * @var Widget
20 */
21 protected $relativeInput;
22
23 /**
24 * @var bool
25 */
26 protected $required;
27
28 /**
29 * @param Widget $relativeInput
30 * @param array $options Configuration options
31 */
32 public function __construct( Widget $relativeInput, array $options = [] ) {
33 $config = \RequestContext::getMain()->getConfig();
34
35 parent::__construct( $options );
36
37 $this->required = $options['required'] ?? false;
38
39 // Properties
40 $this->relativeInput = $relativeInput;
41 $this->relativeInput->addClasses( [ 'mw-widget-ExpiryWidget-relative' ] );
42
43 // Initialization
44 $this
45 ->addClasses( [
46 'mw-widget-ExpiryWidget',
47 'mw-widget-ExpiryWidget-hasDatePicker'
48 ] )
49 ->appendContent( $this->relativeInput );
50 }
51
52 protected function getJavaScriptClassName() {
53 return 'mw.widgets.ExpiryWidget';
54 }
55
56 /**
57 * {@inheritdoc}
58 */
59 public function getConfig( &$config ) {
60 $config['required'] = $this->required;
61 $config['relativeInput'] = [];
62 $this->relativeInput->getConfig( $config['relativeInput'] );
63 return parent::getConfig( $config );
64 }
65 }