X-Git-Url: https://scripts.mit.edu/gitweb/autoinstallsdev/mediawiki.git/blobdiff_plain/19e297c21b10b1b8a3acad5e73fc71dcb35db44a..6932310fd58ebef145fa01eb76edf7150284d8ea:/vendor/oojs/oojs-ui/php/mixins/TitledElement.php diff --git a/vendor/oojs/oojs-ui/php/mixins/TitledElement.php b/vendor/oojs/oojs-ui/php/mixins/TitledElement.php new file mode 100644 index 00000000..16ed98e4 --- /dev/null +++ b/vendor/oojs/oojs-ui/php/mixins/TitledElement.php @@ -0,0 +1,90 @@ +titled = isset( $config['titled'] ) ? $config['titled'] : $this; + + // Initialization + $this->setTitle( + isset( $config['title'] ) ? $config['title'] : null + ); + + $this->registerConfigCallback( function ( &$config ) { + if ( $this->title !== null ) { + $config['title'] = $this->title; + } + } ); + } + + /** + * Set title. + * + * @param string|null $title Title text or null for no title + * @return $this + */ + public function setTitle( $title ) { + $title = $title !== '' ? $title : null; + + if ( $this->title !== $title ) { + $this->title = $title; + $this->updateTitle(); + } + + return $this; + } + + /** + * Update the title attribute, in case of changes to title or accessKey. + * + * @return $this + */ + protected function updateTitle() { + $title = $this->getTitle(); + if ( $title !== null ) { + // Only if this is an AccessKeyedElement + if ( method_exists( $this, 'formatTitleWithAccessKey' ) ) { + $title = $this->formatTitleWithAccessKey( $title ); + } + $this->titled->setAttributes( [ 'title' => $title ] ); + } else { + $this->titled->removeAttributes( [ 'title' ] ); + } + return $this; + } + + /** + * Get title. + * + * @return string Title string + */ + public function getTitle() { + return $this->title; + } +}