title = $title;
$this->lang = $lang;
}
public function setTheme(string $theme): self {
$this->theme = $theme;
return $this;
}
public function getTheme(): string {
return $this->theme;
}
/**
* Add path to css file to render in page head.
*/
public function addCssFile(string $css_file): self {
$this->css_files[$css_file] = $css_file;
return $this;
}
/**
* Add css style to render in page head.
*/
public function addStyle(string $style): self {
$this->styles[] = $style;
return $this;
}
/**
* Add JavaScript to render in page head before js file includes are rendered.
*/
public function addJavaScript(string $js): self {
$this->js[] = $js;
return $this;
}
/**
* Add path to js file to render in page head.
*/
public function addJsFile(string $js_file): self {
$this->js_files[$js_file] = $js_file;
return $this;
}
public function addJsTranslationStrings(array $translations_strings): self {
foreach ($translations_strings as $orig_string => $string) {
$this->addJavaScript('locale[\''.$orig_string.'\'] = '.json_encode($string, JSON_THROW_ON_ERROR).';');
}
return $this;
}
/**
* Show page head html.
*/
public function show(): CHtmlPageHeader {
echo '';
echo (new CTag('html'))
->setAttribute('lang', $this->lang)
->setAttribute('theme', $this->theme);
echo <<
HTML;
echo (new CTag('title', true))->addItem($this->title);
echo <<
HTML;
foreach ($this->css_files as $path) {
if (parse_url($path, PHP_URL_QUERY) === null) {
$path .= '?'.(int) filemtime($path);
}
echo (new CTag('link'))
->setAttribute('rel', 'stylesheet')
->setAttribute('type', 'text/css')
->setAttribute('href', $path);
}
if ($this->styles) {
echo '';
}
if ($this->js) {
echo '';
}
foreach ($this->js_files as $path) {
if (parse_url($path, PHP_URL_QUERY) === null) {
$path .= '?'.(int) filemtime($path);
}
echo (new CTag('script', true))->setAttribute('src', $path);
}
echo ''."\n";
return $this;
}
}