From c2ee3e24bcc84f94aafd17dd08069280c3ded363 Mon Sep 17 00:00:00 2001 From: "E. S." Date: Sat, 17 May 2025 23:56:30 +0300 Subject: [PATCH] omnia: start --- composer.json | 4 ++ config.yaml.example | 2 + deploy/static.sh | 2 +- deploy/util/gen_runtime_config.php | 2 +- public/common/scss/app/head.scss | 1 + public/common/scss/app/mobile.scss | 3 + public/omnia/favicon.ico | Bin 0 -> 22382 bytes public/omnia/favicon.png | Bin 0 -> 4172 bytes public/omnia/scss/common.scss | 3 + public/omnia/scss/common@dark.scss | 2 + public/omnia/scss/common@light.scss | 2 + public/omnia/scss/targets.txt | 2 + src/engine/http/RequestHandler.php | 1 + src/handlers/omnia/BaseHandler.php | 25 +++++++++ src/handlers/omnia/MainHandler.php | 24 ++++++++ src/lib/foreignone/ForeignOneSkin.php | 1 + src/lib/omnia/OmniaSkin.php | 78 ++++++++++++++++++++++++++ src/lib/omnia/OmniaSkinOptions.php | 9 +++ src/routes.php | 8 +++ src/skins/error/notfound.twig | 2 +- src/skins/foreignone/footer.twig | 3 +- src/skins/foreignone/header.twig | 8 ++- src/skins/omnia/footer.twig | 21 +++++++ src/skins/omnia/header.twig | 34 +++++++++++ src/skins/omnia/index.twig | 6 ++ src/strings/omnia.yaml | 4 ++ 26 files changed, 242 insertions(+), 5 deletions(-) create mode 100644 public/omnia/favicon.ico create mode 100644 public/omnia/favicon.png create mode 100644 public/omnia/scss/common.scss create mode 100644 public/omnia/scss/common@dark.scss create mode 100644 public/omnia/scss/common@light.scss create mode 100644 public/omnia/scss/targets.txt create mode 100644 src/handlers/omnia/BaseHandler.php create mode 100644 src/handlers/omnia/MainHandler.php create mode 100644 src/lib/omnia/OmniaSkin.php create mode 100644 src/lib/omnia/OmniaSkinOptions.php create mode 100644 src/skins/omnia/footer.twig create mode 100644 src/skins/omnia/header.twig create mode 100644 src/skins/omnia/index.twig create mode 100644 src/strings/omnia.yaml diff --git a/composer.json b/composer.json index 94a167d..b0e8dad 100644 --- a/composer.json +++ b/composer.json @@ -26,6 +26,10 @@ "app\\ic\\": [ "src/lib/ic", "src/handlers/ic" + ], + "app\\omnia\\": [ + "src/lib/omnia", + "src/handlers/omnia" ] } } diff --git a/config.yaml.example b/config.yaml.example index 222bd9d..31990d7 100644 --- a/config.yaml.example +++ b/config.yaml.example @@ -8,6 +8,8 @@ subdomains: dev: foreignone ic: ic icdev: ic + omnia: omnia + omniadev: omnia mysql: host: "127.0.0.1" diff --git a/deploy/static.sh b/deploy/static.sh index 21087c8..df8f636 100755 --- a/deploy/static.sh +++ b/deploy/static.sh @@ -22,7 +22,7 @@ while [ $# -gt 0 ]; do done [ -z "$OUTPUT_ROOT_DIR" ] && die "you must specify output directory" -for project in ic foreignone; do +for project in ic foreignone omnia; do "$SCRIPT_DIR"/util/build_css.sh -i "$APP_DIR/public/$project/scss" -o "$OUTPUT_ROOT_DIR/public/$project/dist-css" || die "build_css failed" "$SCRIPT_DIR"/util/build_js.sh -i "$APP_DIR/public/common/js" -o "$OUTPUT_ROOT_DIR/public/$project/dist-js" || die "build_js failed" $PHP "$SCRIPT_DIR"/util/gen_runtime_config.php \ diff --git a/deploy/util/gen_runtime_config.php b/deploy/util/gen_runtime_config.php index ff9c045..e2e4859 100644 --- a/deploy/util/gen_runtime_config.php +++ b/deploy/util/gen_runtime_config.php @@ -28,7 +28,7 @@ $hashes = [ 'assets' => [] ]; -foreach (['ic', 'foreignone'] as $project) { +foreach (['ic', 'foreignone', 'omnia'] as $project) { foreach (['js', 'css'] as $type) { $dist_dir = $app_root.'/public/'.$project.'/dist-'.$type; $entries = glob_recursive($dist_dir.'/*.'.$type); diff --git a/public/common/scss/app/head.scss b/public/common/scss/app/head.scss index e285211..3a69ac3 100644 --- a/public/common/scss/app/head.scss +++ b/public/common/scss/app/head.scss @@ -77,6 +77,7 @@ vertical-align: top; color: $dark-grey; // color of separators padding-top: 15px; + white-space: nowrap; } a.head-item { border: 1px $head-items-border solid; diff --git a/public/common/scss/app/mobile.scss b/public/common/scss/app/mobile.scss index ed1a804..86e0729 100644 --- a/public/common/scss/app/mobile.scss +++ b/public/common/scss/app/mobile.scss @@ -11,6 +11,9 @@ textarea { .head, .head-inner, .head-logo-wrap, .head-items, .head-logo { display: block; } +.head-items { + white-space: normal; +} .head { overflow: hidden; border-bottom: 1px $border-color solid; diff --git a/public/omnia/favicon.ico b/public/omnia/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b79796635dc1a545b0a3448794458a0f68c26de6 GIT binary patch literal 22382 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 L_6y2`%D(?E3lq&e literal 0 HcmV?d00001 diff --git a/public/omnia/favicon.png b/public/omnia/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..19e8f87d40e64a8dee93d8c82674e1ffbe5c1c40 GIT binary patch literal 4172 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 + if ($route === null) throw new NotFound('Route not found'); diff --git a/src/handlers/omnia/BaseHandler.php b/src/handlers/omnia/BaseHandler.php new file mode 100644 index 0000000..d9b1da5 --- /dev/null +++ b/src/handlers/omnia/BaseHandler.php @@ -0,0 +1,25 @@ +skin = new OmniaSkin(); + $this->skin->strings->load('omnia'); + $this->skin->addStatic( + 'css/common.css', + 'js/common.js' + ); + $this->skin->setGlobal([ + 'is_admin' => isAdmin(), + 'is_dev' => isDev() + ]); + } +} \ No newline at end of file diff --git a/src/handlers/omnia/MainHandler.php b/src/handlers/omnia/MainHandler.php new file mode 100644 index 0000000..9326e95 --- /dev/null +++ b/src/handlers/omnia/MainHandler.php @@ -0,0 +1,24 @@ +skin->meta->title = lang('meta_index_title'); + $this->skin->meta->description = lang('meta_index_description'); + $this->skin->meta->url = 'https://'.$_SERVER['HTTP_HOST'].'/'; + + $this->skin->options->isIndex = true; + + return $this->skin->renderPage('index.twig'); + } +} diff --git a/src/lib/foreignone/ForeignOneSkin.php b/src/lib/foreignone/ForeignOneSkin.php index e350a2c..90cfc7d 100644 --- a/src/lib/foreignone/ForeignOneSkin.php +++ b/src/lib/foreignone/ForeignOneSkin.php @@ -96,6 +96,7 @@ class ForeignOneSkin 'admin_email' => $config['admin_email'], 'script_html' => $this->getFooterScriptTags(), 'theme' => ThemesUtil::getUserTheme(), + 'omnia_url' => 'https://omnia'.(isDev() ? 'dev' : '').'.'.$config['domain'], ]; return $this->doRender('footer.twig', $footer_vars); } diff --git a/src/lib/omnia/OmniaSkin.php b/src/lib/omnia/OmniaSkin.php new file mode 100644 index 0000000..4c07463 --- /dev/null +++ b/src/lib/omnia/OmniaSkin.php @@ -0,0 +1,78 @@ +title) && $this->title ? $this->title : lang('site_title'); + if (!$this->options->isIndex) + $title = $title.' - Omnia'; + return $title; + } + + set(string $title) { + $this->title = $title; + } + } + + public function __construct() { + parent::__construct(); + $this->options = new OmniaSkinOptions(); + } + + protected function getTwigLoader(): LoaderInterface { + $twig_loader = new FilesystemLoader(APP_ROOT.'/src/skins/omnia', APP_ROOT); + return $twig_loader; + } + + protected function getCacheDir(): string { + global $config; + return $config['skin_cache_'.(isDev() ? 'dev' : 'prod').'_dir'].'/omnia'; + } + + protected function renderHeader(): string { + global $config; + + $vars = [ + 'title' => $this->title, + 'meta_html' => $this->meta->getHtml(), + 'static_html' => $this->getHeaderStaticTags(), + 'svg_html' => $this->getSVGTags(), + 'render_options' => $this->options->getOptions(), + 'home_url' => 'https://'.(isDev() ? 'dev.' : '').$config['domain'], + 'app_config' => [ + 'domain' => $config['domain'], + 'devMode' => isDev(), + 'cookieHost' => $config['cookie_host'], + ], + 'theme' => ThemesUtil::getUserTheme(), + ]; + + return $this->doRender('header.twig', $vars); + } + + protected function renderBody(string $template, array $vars): string { + return $this->doRender($template, $this->vars + $vars); + } + + protected function renderFooter(): string { + global $config; + $footer_vars = [ + 'exec_time' => getExecutionTime(), + 'render_options' => $this->options->getOptions(), + 'admin_email' => $config['admin_email'] ?? '', + 'script_html' => $this->getFooterScriptTags(), + 'theme' => ThemesUtil::getUserTheme(), + ]; + return $this->doRender('footer.twig', $footer_vars); + } +} \ No newline at end of file diff --git a/src/lib/omnia/OmniaSkinOptions.php b/src/lib/omnia/OmniaSkinOptions.php new file mode 100644 index 0000000..96bde67 --- /dev/null +++ b/src/lib/omnia/OmniaSkinOptions.php @@ -0,0 +1,9 @@ + 'tzo_part part=$(1)', ], ]; +})(), + +'omnia' => (function() { + return [ + 'Main' => [ + '/' => 'index', + ], + ]; })() ]; diff --git a/src/skins/error/notfound.twig b/src/skins/error/notfound.twig index 5254bf8..206b185 100644 --- a/src/skins/error/notfound.twig +++ b/src/skins/error/notfound.twig @@ -30,7 +30,7 @@ body { width: 220px; height: 220px; display: block; - background: url("/img/eagle.jpg") no-repeat center center; + background: url("https://4in1.ws/img/eagle.jpg") no-repeat center center; background-size: cover; border-radius: 50%; text-decoration: none; diff --git a/src/skins/foreignone/footer.twig b/src/skins/foreignone/footer.twig index 5a43b13..2230467 100644 --- a/src/skins/foreignone/footer.twig +++ b/src/skins/foreignone/footer.twig @@ -8,7 +8,8 @@ diff --git a/src/skins/foreignone/header.twig b/src/skins/foreignone/header.twig index a9e9d4b..86f8a7f 100644 --- a/src/skins/foreignone/header.twig +++ b/src/skins/foreignone/header.twig @@ -36,7 +36,13 @@ wiki about - + invisible college {{ svgInPlace('college_20') }} diff --git a/src/skins/omnia/footer.twig b/src/skins/omnia/footer.twig new file mode 100644 index 0000000..20ede7a --- /dev/null +++ b/src/skins/omnia/footer.twig @@ -0,0 +1,21 @@ + + + + + + +{{ script_html|raw }} + + + + +{% if is_admin %} + +{% endif %} \ No newline at end of file diff --git a/src/skins/omnia/header.twig b/src/skins/omnia/header.twig new file mode 100644 index 0000000..3485003 --- /dev/null +++ b/src/skins/omnia/header.twig @@ -0,0 +1,34 @@ + + + + + + + + {{ title }} + + {{ meta_html|raw }} + {{ static_html|raw }} + + +{{ svg_html|raw }} +
+ + + +
diff --git a/src/skins/omnia/index.twig b/src/skins/omnia/index.twig new file mode 100644 index 0000000..d0e7cba --- /dev/null +++ b/src/skins/omnia/index.twig @@ -0,0 +1,6 @@ +
+
+

Welcome to Omnia

+

Hello, world.

+
+
\ No newline at end of file diff --git a/src/strings/omnia.yaml b/src/strings/omnia.yaml new file mode 100644 index 0000000..6f99255 --- /dev/null +++ b/src/strings/omnia.yaml @@ -0,0 +1,4 @@ +# common +site_title: Omnia +meta_index_title: "Omnia" +meta_index_description: "Omnia domain" \ No newline at end of file