From 9dd2345ecfff4f7d65ec106a8aee8d866c972585 Mon Sep 17 00:00:00 2001
From: Evgeny Zinoviev
Date: Thu, 1 Feb 2024 00:18:42 +0300
Subject: use .phps extension for skin files
---
skin/base.skin.php | 324 -----------------------------------------------------
1 file changed, 324 deletions(-)
delete mode 100644 skin/base.skin.php
(limited to 'skin/base.skin.php')
diff --git a/skin/base.skin.php b/skin/base.skin.php
deleted file mode 100644
index d583ffe..0000000
--- a/skin/base.skin.php
+++ /dev/null
@@ -1,324 +0,0 @@
- $config['domain'],
- 'devMode' => $config['is_dev'],
- 'cookieHost' => $config['cookie_host'],
-]);
-
-$body_class = [];
-if ($opts['full_width'])
- $body_class[] = 'full-width';
-else if ($opts['wide'])
- $body_class[] = 'wide';
-if (!empty($body_class))
- $body_class = implode(' ', $body_class);
-else
- $body_class = '';
-
-return <<
-
-
-
-
-
-
- {$title}
-
- {$ctx->renderMeta($meta)}
- {$ctx->renderStatic($static, $theme)}
-
- if_true($body_class, ' class="'.$body_class.'"')}>
- {$ctx->renderHeader($theme, renderLogo($ctx, $opts['logo_path_map'], $opts['logo_link_map']))}
-
- {$ctx->renderScript($js, $unsafe_lang, $opts['dynlogo_enabled'])}
-
-
-
-
-
-
-
-
-HTML;
-}
-
-function renderScript($ctx, $unsafe_js, $unsafe_lang, $enable_dynlogo) {
-global $config;
-
-$styles = json_encode($ctx->styleNames);
-if ($config['is_dev'])
- $versions = '{}';
-else {
- $versions = [];
- foreach ($config['static'] as $name => $v) {
- list($type, $bname) = getStaticNameParts($name);
- $versions[$type][$bname] = $v;
- }
- $versions = json_encode($versions);
-}
-
-return <<
-StaticManager.init({$styles}, {$versions});
-{$ctx->if_true($unsafe_js, '(function(){'.$unsafe_js.'})();')}
-{$ctx->if_true($unsafe_lang, 'extend(__lang, '.$unsafe_lang.');')}
-{$ctx->if_true($enable_dynlogo, 'DynamicLogo.init();')}
-ThemeSwitcher.init();
-
-HTML;
-}
-
-function renderMeta($ctx, $meta) {
- if (empty($meta))
- return '';
- return implode('', array_map(function(array $item): string {
- $s = ' $v)
- $s .= ' '.htmlescape($k).'="'.htmlescape($v).'"';
- $s .= '>';
- return $s;
- }, $meta));
-}
-
-function renderStatic($ctx, $static, $theme) {
- global $config;
- $html = [];
- $dark = $theme == 'dark';
- $ctx->styleNames = [];
- foreach ($static as $name) {
- // javascript
- if (str_starts_with($name, 'js/'))
- $html[] = jsLink($name);
-
- // css
- else if (str_starts_with($name, 'css/')) {
- $html[] = cssLink($name, 'light', $style_name);
- $ctx->styleNames[] = $style_name;
-
- if ($dark)
- $html[] = cssLink($name, 'dark', $style_name);
- else if (!$config['is_dev'])
- $html[] = cssPrefetchLink($style_name.'_dark');
- }
- else
- logError(__FUNCTION__.': unexpected static entry: '.$name);
- }
- return implode("\n", $html);
-}
-
-function jsLink(string $name): string {
- global $config;
- list (, $bname) = getStaticNameParts($name);
- if ($config['is_dev']) {
- $href = '/js.php?name='.urlencode($bname).'&v='.time();
- } else {
- $href = '/dist-js/'.$bname.'.js?'.getStaticVersion($name);
- }
- return '';
-}
-
-function cssLink(string $name, string $theme, &$bname = null): string {
- global $config;
-
- list(, $bname) = getStaticNameParts($name);
-
- if ($config['is_dev']) {
- $href = '/sass.php?name='.urlencode($bname).'&theme='.$theme.'&v='.time();
- } else {
- $version = getStaticVersion('css/'.$bname.($theme == 'dark' ? '_dark' : '').'.css');
- $href = '/dist-css/'.$bname.($theme == 'dark' ? '_dark' : '').'.css?'.$version;
- }
-
- $id = 'style_'.$bname;
- if ($theme == 'dark')
- $id .= '_dark';
-
- return '';
-}
-
-function cssPrefetchLink(string $name): string {
-$url = '/dist-css/'.$name.'.css?'.getStaticVersion('css/'.$name.'.css');
-return <<
-HTML;
-}
-
-function getStaticNameParts(string $name): array {
- $dname = dirname($name);
- $bname = basename($name);
- if (($pos = strrpos($bname, '.'))) {
- $ext = substr($bname, $pos+1);
- $bname = substr($bname, 0, $pos);
- } else {
- $ext = '';
- }
- return [$dname, $bname, $ext];
-}
-
-function getStaticVersion(string $name): string {
- global $config;
- if ($config['is_dev'])
- return time();
- if (str_starts_with($name, '/')) {
- logWarning(__FUNCTION__.': '.$name.' starts with /');
- $name = substr($name, 1);
- }
- return $config['static'][$name] ?? 'notfound';
-}
-
-function renderHeader($ctx, $theme, $unsafe_logo_html) {
-$items = [
- ['url' => 'javascript:void(0)', 'label' => $theme, 'label_id' => 'theme-switcher-label', 'theme_switcher' => true],
- ['url' => '/', 'label' => 'blog'],
- ['url' => '/projects/', 'label' => 'projects'],
- ['url' => 'https://git.ch1p.io/?s=idle', 'label' => 'git'],
- ['url' => '/misc/', 'label' => 'misc'],
- ['url' => '/contacts/', 'label' => 'contacts'],
-];
-if (\is_admin())
- $items[] = ['url' => '/admin/', 'label' => 'admin'];
-
-// here, items are rendered using for_each, so that there are no gaps (whitespaces) between tags
-
-return <<
-
-
{$unsafe_logo_html}
-
- {$ctx->for_each($items, fn($item) => $ctx->renderHeaderItem($item['url'], $item['label'], $item['label_id'] ?? null, $item['theme_switcher'] ?? false))}
-
-
-
-HTML;
-}
-
-function renderHeaderItem($ctx, $url, $label, $label_id, $is_theme_switcher) {
-return <<if_true($is_theme_switcher, ' onclick="return ThemeSwitcher.next(event)"')}>
-
- {$ctx->if_true($is_theme_switcher, ''.$ctx->renderMoonIcon().'')}
- if_true($label_id, ' id="'.$label_id.'"')}>{$label}
-
-
-HTML;
-}
-
-// TODO rewrite this fcking crap
-function renderLogo($ctx, array $path_map = [], array $link_map = []): string {
- $uri = request_path();
-
- if (!is_admin()) {
- $prompt_sign = '$';
- } else {
- $prompt_sign = '#';
- }
-
- if ($uri == '/') {
- $html = '/home/'.$ctx->lang('ch1p').' '.$prompt_sign;
- } else {
- $uri_len = strlen($uri);
-
- $html = '';
- $close_tags = 0;
-
- $path_parts = [];
- $path_links = [];
-
- $last_pos = 0;
- $cur_path = '';
- while ($last_pos < $uri_len) {
- $first = $last_pos === 0;
- $end = false;
-
- $pos = strpos($uri, '/', $last_pos);
- if ($pos === false || $pos == $uri_len-1) {
- $pos = $uri_len-1;
- $end = true;
- }
-
- $part = substr($uri, $last_pos, $pos - $last_pos + 1);
- $cur_path .= $part;
-
- if ($end) {
- if (substr($part, -1) == '/')
- $part = substr($part, 0, strlen($part)-1);
- $cur_path = '/';
- $html .= str_repeat('', $close_tags-1);
- $close_tags = 1;
- }
-
- $span_class = 'head-logo-path';
- if ($first) {
- $span_class .= ' alwayshover';
- } else if ($end) {
- $span_class .= ' neverhover';
- }
-
- $html .= '${{'.count($path_parts).'}}';
- $path_parts[] = ($first ? '~' : '').$part;
- $path_links[] = $cur_path;
-
- $last_pos = $pos + 1;
- $close_tags++;
- }
- $html .= str_repeat('', $close_tags).' '.$prompt_sign.' cd ~ '.enterIcon().'Enter';
-
- for ($i = count($path_parts)-1, $j = 0; $i >= 0; $i--, $j++) {
- if (isset($path_map[$j])) {
- $tmp = htmlescape(strtrim($path_map[$j], 40, $trimmed));
- if ($trimmed)
- $tmp .= '…';
- $tmp_html = ''.$tmp.'';
- if ($j > 0)
- $tmp_html .= '/';
- $html = str_replace_once('${{'.$i.'}}', $tmp_html, $html);
- } else {
- $html = str_replace_once('${{'.$i.'}}', $path_parts[$i], $html);
- }
-
- if (isset($link_map[$j])) {
- $html = str_replace_once('$[['.$i.']]', $link_map[$j], $html);
- } else {
- $html = str_replace_once('$[['.$i.']]', $path_links[$i], $html);
- }
- }
- }
-
- return $html;
-}
-
-function enterIcon() {
-return <<
-SVG;
-}
-
-function renderMoonIcon($ctx) {
-return <<
-SVG;
-}
--
cgit v1.2.3