diff options
author | Luke Shumaker <lukeshu@sbcglobal.net> | 2016-05-01 15:30:02 -0400 |
---|---|---|
committer | Luke Shumaker <lukeshu@sbcglobal.net> | 2016-05-01 15:30:02 -0400 |
commit | 1de335ad3f395ca6861085393ba366a9e3fb4a0d (patch) | |
tree | f1fdd326034e05177596851be6a7127615d81498 /vendor/oojs/oojs-ui/php/Theme.php | |
parent | 9c75fa8ff6d4d38ef552c00fef5969fb154765e8 (diff) | |
parent | f6d65e533c62f6deb21342d4901ece24497b433e (diff) |
Merge commit 'f6d65'
# Conflicts:
# skins/ArchLinux/ArchLinux.php
Diffstat (limited to 'vendor/oojs/oojs-ui/php/Theme.php')
-rw-r--r-- | vendor/oojs/oojs-ui/php/Theme.php | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/vendor/oojs/oojs-ui/php/Theme.php b/vendor/oojs/oojs-ui/php/Theme.php new file mode 100644 index 00000000..d36b6d82 --- /dev/null +++ b/vendor/oojs/oojs-ui/php/Theme.php @@ -0,0 +1,58 @@ +<?php + +namespace OOUI; + +/** + * Theme logic. + * + * @abstract + */ +class Theme { + + /* Members */ + + private static $singleton; + + /* Static Methods */ + + public static function setSingleton( Theme $theme ) { + self::$singleton = $theme; + } + + public static function singleton() { + if ( !self::$singleton ) { + throw new Exception( __METHOD__ . ' was called with no singleton theme set.' ); + } + + return self::$singleton; + } + + /** + * Get a list of classes to be applied to a widget. + * + * The 'on' and 'off' lists combined MUST contain keys for all classes the theme adds or removes, + * otherwise state transitions will not work properly. + * + * @param Element $element Element for which to get classes + * @return array Categorized class names with `on` and `off` lists + */ + public function getElementClasses( Element $element ) { + return array( 'on' => array(), 'off' => array() ); + } + + /** + * Update CSS classes provided by the theme. + * + * For elements with theme logic hooks, this should be called any time there's a state change. + * + * @param Element $element Element for which to update classes + * @return array Categorized class names with `on` and `off` lists + */ + public function updateElementClasses( Element $element ) { + $classes = $this->getElementClasses( $element ); + + $element + ->removeClasses( $classes['off'] ) + ->addClasses( $classes['on'] ); + } +} |