Add getBodyClassList() and removeBodyClass() methods to Context

https://xetown.com/questions/1569477
This commit is contained in:
Kijin Sung 2021-05-14 22:40:38 +09:00
parent 5160022a30
commit bd075ee409
2 changed files with 58 additions and 13 deletions

View file

@ -2383,21 +2383,26 @@ class Context
self::$_instance->html_header .= (self::$_instance->html_header ? "\n" : '') . $header;
}
public static function clearHtmlHeader()
{
self::$_instance->html_header = '';
}
/**
* Returns added html code by addHtmlHeader()
*
* @return string Added html code before </head>
*/
public static function getHtmlHeader()
public static function getHtmlHeader(): string
{
return self::$_instance->html_header;
}
/**
* Remove all content added by addHtmlHeader()
*
* @return void
*/
public static function clearHtmlHeader()
{
self::$_instance->html_header = '';
}
/**
* Add css class to Html Body
*
@ -2405,19 +2410,52 @@ class Context
*/
public static function addBodyClass($class_name)
{
self::$_instance->body_class[] = $class_name;
$class_name = strval($class_name);
if (!in_array($class_name, self::$_instance->body_class))
{
self::$_instance->body_class[] = $class_name;
}
}
/**
* Remove css class from Html Body
*
* @param string $class_name class name
*/
public static function removeBodyClass($class_name)
{
$class_name = strval($class_name);
self::$_instance->body_class = array_values(array_filter(self::$_instance->body_class, function($str) use($class_name) {
return $str !== $class_name;
}));
}
/**
* Return css class to Html Body
*
* @return string Return class to html body
* @return array
*/
public static function getBodyClass()
public static function getBodyClassList(): array
{
$class_list = self::$_instance->body_class;
return (count($class_list) > 0) ? sprintf(' class="%s"', implode(' ', array_unique($class_list))) : '';
return self::$_instance->body_class;
}
/**
* Return css class to Html Body
*
* @deprecated
* @return string
*/
public static function getBodyClass(): string
{
if (count(self::$_instance->body_class))
{
return sprintf(' class="%s"', implode(' ', self::$_instance->body_class));
}
else
{
return '';
}
}
/**

View file

@ -60,10 +60,17 @@ class ContextTest extends \Codeception\TestCase\Test
$this->assertEquals(Context::getBodyClass(), ' class="red green"');
Context::addBodyClass('blue');
$this->assertEquals(Context::getBodyClass(), ' class="red green blue"');
Context::addBodyClass('yellow');
$this->assertEquals(Context::getBodyClassList(), ['red', 'green', 'blue', 'yellow']);
// remove class manually
Context::removeBodyClass('yellow');
$this->assertEquals(Context::getBodyClassList(), ['red', 'green', 'blue']);
// remove duplicated class
Context::addBodyClass('red');
$this->assertEquals(Context::getBodyClass(), ' class="red green blue"');
$this->assertEquals(Context::getBodyClassList(), ['red', 'green', 'blue']);
}
public function testSetRequestMethod()