rework and update banner on main page (#11)
All checks were successful
Docker Build and Push / build-and-push (push) Successful in 1m43s
All checks were successful
Docker Build and Push / build-and-push (push) Successful in 1m43s
Refactor banner code to be more universal, and updated it's content to GSoC 2026. <img width="auto" alt="image.png" src="attachments/a9eee86a-eaf5-4a9b-b21c-8bd2bb6a7d07"> Reviewed-on: #11 Reviewed-by: Gleb Zaharov <risdeveau@lair.moe> Co-authored-by: Burer <burer@kolibrios.org> Co-committed-by: Burer <burer@kolibrios.org>
This commit was merged in pull request #11.
This commit is contained in:
3
configs/banner.ini
Normal file
3
configs/banner.ini
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
[banner]
|
||||||
|
url = https://summerofcode.withgoogle.com/programs/2026/organizations/kolibrios-project-team
|
||||||
|
img = gsoc.png
|
||||||
@@ -14,9 +14,10 @@ forum = Forum
|
|||||||
wiki = Wiki
|
wiki = Wiki
|
||||||
git = Git
|
git = Git
|
||||||
|
|
||||||
[git]
|
[banner]
|
||||||
header = KolibriOS ist zu Git gewechselt!
|
header = KolibriOS wurde zu GSoC 2026 angenommen!
|
||||||
text = Schau dir unsere neue entwicklerfreundliche Infrastruktur an
|
text = Informieren Sie sich über Programmdetails und unsere Projektideen
|
||||||
|
alt = GSoC
|
||||||
|
|
||||||
[article]
|
[article]
|
||||||
p1 = {kolibrios} ist ein winziges, aber unglaublich leistungsfähiges und
|
p1 = {kolibrios} ist ein winziges, aber unglaublich leistungsfähiges und
|
||||||
|
|||||||
@@ -14,9 +14,10 @@ forum = Forum
|
|||||||
wiki = Wiki
|
wiki = Wiki
|
||||||
git = Git
|
git = Git
|
||||||
|
|
||||||
[git]
|
[banner]
|
||||||
header = KolibriOS moved to Git!
|
header = KolibriOS accepted to GSoC 2026!
|
||||||
text = Check our new developers-friendly infrastructure
|
text = Check program details and our project ideas
|
||||||
|
alt = GSoC
|
||||||
|
|
||||||
[article]
|
[article]
|
||||||
p1 = {kolibrios} is a tiny yet incredibly powerful and fast operating system for
|
p1 = {kolibrios} is a tiny yet incredibly powerful and fast operating system for
|
||||||
|
|||||||
@@ -14,9 +14,10 @@ forum = Foro
|
|||||||
wiki = Wiki
|
wiki = Wiki
|
||||||
git = Git
|
git = Git
|
||||||
|
|
||||||
[git]
|
[banner]
|
||||||
header = ¡KolibriOS se ha trasladado a Git!
|
header = ¡KolibriOS fue aceptado en GSoC 2026!
|
||||||
text = Mira nuestra nueva infraestructura amigable para desarrolladores
|
text = Consulta los detalles del programa y nuestras ideas de proyecto
|
||||||
|
alt = GSoC
|
||||||
|
|
||||||
[article]
|
[article]
|
||||||
p1 = {kolibrios} es un sistema operativo diminuto, pero increíblemente potente y
|
p1 = {kolibrios} es un sistema operativo diminuto, pero increíblemente potente y
|
||||||
|
|||||||
@@ -14,9 +14,10 @@ forum = Forum
|
|||||||
wiki = Wiki
|
wiki = Wiki
|
||||||
git = Git
|
git = Git
|
||||||
|
|
||||||
[git]
|
[banner]
|
||||||
header = KolibriOS a déménagé sur Git !
|
header = KolibriOS a été accepté au GSoC 2026 !
|
||||||
text = Découvrez notre nouvelle infrastructure conviviale pour les développeurs
|
text = Consultez les détails du programme et nos idées de projets
|
||||||
|
alt = GSoC
|
||||||
|
|
||||||
[article]
|
[article]
|
||||||
p1 = {kolibrios} est un système d`exploitation minuscule, mais incroyablement
|
p1 = {kolibrios} est un système d`exploitation minuscule, mais incroyablement
|
||||||
|
|||||||
@@ -14,10 +14,10 @@ forum = Forum
|
|||||||
wiki = Wiki
|
wiki = Wiki
|
||||||
git = Git
|
git = Git
|
||||||
|
|
||||||
[git]
|
[banner]
|
||||||
header = KolibriOS si è spostato su Git!
|
header = KolibriOS è stato accettato al GSoC 2026!
|
||||||
text = Dai un`occhiata alla nostra nuova infrastruttura pensata per gli
|
text = Consulta i dettagli del programma e le nostre idee di progetto
|
||||||
sviluppatori
|
alt = GSoC
|
||||||
|
|
||||||
[article]
|
[article]
|
||||||
p1 = {kolibrios} è un sistema operativo minuscolo, ma incredibilmente potente e
|
p1 = {kolibrios} è un sistema operativo minuscolo, ma incredibilmente potente e
|
||||||
|
|||||||
@@ -14,9 +14,10 @@ forum = Forum
|
|||||||
wiki = Wiki
|
wiki = Wiki
|
||||||
git = Git
|
git = Git
|
||||||
|
|
||||||
[git]
|
[banner]
|
||||||
header = KolibriOS is verhuisd naar Git!
|
header = KolibriOS is geaccepteerd voor GSoC 2026!
|
||||||
text = Bekijk onze nieuwe, ontwikkelaarsvriendelijke infrastructuur
|
text = Bekijk de programmadetails en onze projectideeën
|
||||||
|
alt = GSoC
|
||||||
|
|
||||||
[article]
|
[article]
|
||||||
p1 = {kolibrios} is een klein maar ongelooflijk krachtig en snel
|
p1 = {kolibrios} is een klein maar ongelooflijk krachtig en snel
|
||||||
|
|||||||
@@ -14,9 +14,10 @@ forum = Форум
|
|||||||
wiki = Вики
|
wiki = Вики
|
||||||
git = Git
|
git = Git
|
||||||
|
|
||||||
[git]
|
[banner]
|
||||||
header = КолибриОС перешла на Git!
|
header = KolibriOS принята в GSoC 2026!
|
||||||
text = Ознакомьтесь с нашей новой, удобной для разработчиков инфраструктурой
|
text = Ознакомьтесь с деталями программы и нашими идеями проектов
|
||||||
|
alt = GSoC
|
||||||
|
|
||||||
[article]
|
[article]
|
||||||
p1 = {kolibrios} — это крошечная, но невероятно мощная и быстрая операционная
|
p1 = {kolibrios} — это крошечная, но невероятно мощная и быстрая операционная
|
||||||
|
|||||||
@@ -14,9 +14,10 @@ forum = 论坛
|
|||||||
wiki = 百科
|
wiki = 百科
|
||||||
git = Git
|
git = Git
|
||||||
|
|
||||||
[git]
|
[banner]
|
||||||
header = KolibriOS 现已拥抱 Git!
|
header = KolibriOS 已被 GSoC 2026 录取!
|
||||||
text = 来看看我们全新又对开发者友好的代码仓库吧:
|
text = 查看项目详情和我们的项目创意
|
||||||
|
alt = GSoC
|
||||||
|
|
||||||
[article]
|
[article]
|
||||||
p1 = {kolibrios} 是一个体积微小、功能强大、响应迅速的,面向 x86 兼容机的操作系统。
|
p1 = {kolibrios} 是一个体积微小、功能强大、响应迅速的,面向 x86 兼容机的操作系统。
|
||||||
|
|||||||
@@ -14,9 +14,10 @@ forum = 論壇
|
|||||||
wiki = 百科
|
wiki = 百科
|
||||||
git = Git
|
git = Git
|
||||||
|
|
||||||
[git]
|
[banner]
|
||||||
header = KolibriOS 現已移入 Git!
|
header = KolibriOS 已入選 GSoC 2026!
|
||||||
text = 來看看我們又新又友好的代碼倉庫吧:
|
text = 查看計畫詳情和我們的專案構想
|
||||||
|
alt = GSoC
|
||||||
|
|
||||||
[article]
|
[article]
|
||||||
p1 = {kolibrios} 是一個空間小、功能強、回應快的,面向 x86 兼容機的作業系統。
|
p1 = {kolibrios} 是一個空間小、功能強、回應快的,面向 x86 兼容機的作業系統。
|
||||||
|
|||||||
50
modules/configs.py
Normal file
50
modules/configs.py
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
from os import path, listdir
|
||||||
|
from configparser import ConfigParser
|
||||||
|
import threading
|
||||||
|
|
||||||
|
|
||||||
|
_configs = {}
|
||||||
|
_loaded = False
|
||||||
|
_load_lock = threading.Lock()
|
||||||
|
|
||||||
|
|
||||||
|
def load_all_configs():
|
||||||
|
new_configs = {}
|
||||||
|
|
||||||
|
configs_dir = "configs"
|
||||||
|
if not path.isdir(configs_dir):
|
||||||
|
return new_configs
|
||||||
|
|
||||||
|
for filename in sorted(listdir(configs_dir)):
|
||||||
|
if not filename.endswith(".ini"):
|
||||||
|
continue
|
||||||
|
|
||||||
|
file_path = path.join(configs_dir, filename)
|
||||||
|
cp = ConfigParser()
|
||||||
|
with open(file_path, encoding="utf-8") as f:
|
||||||
|
cp.read_file(f)
|
||||||
|
|
||||||
|
for section in cp.sections():
|
||||||
|
section_data = new_configs.setdefault(section, {})
|
||||||
|
section_data.update(dict(cp[section]))
|
||||||
|
|
||||||
|
return new_configs
|
||||||
|
|
||||||
|
|
||||||
|
def ensure_loaded():
|
||||||
|
global _configs, _loaded
|
||||||
|
with _load_lock:
|
||||||
|
if _loaded:
|
||||||
|
return
|
||||||
|
_configs = load_all_configs()
|
||||||
|
_loaded = True
|
||||||
|
|
||||||
|
|
||||||
|
def get_section(name):
|
||||||
|
ensure_loaded()
|
||||||
|
return dict(_configs.get(name, {}))
|
||||||
|
|
||||||
|
|
||||||
|
def get_all_sections():
|
||||||
|
ensure_loaded()
|
||||||
|
return {section: dict(values) for section, values in _configs.items()}
|
||||||
@@ -2,6 +2,8 @@ from os import path, listdir
|
|||||||
from configparser import ConfigParser
|
from configparser import ConfigParser
|
||||||
import threading
|
import threading
|
||||||
|
|
||||||
|
from modules import configs
|
||||||
|
|
||||||
|
|
||||||
translations = {}
|
translations = {}
|
||||||
locales_name = {}
|
locales_name = {}
|
||||||
@@ -33,6 +35,13 @@ def load_all_locales():
|
|||||||
section: dict(cp[section]) for section in cp.sections()
|
section: dict(cp[section]) for section in cp.sections()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
shared_sections = configs.get_all_sections()
|
||||||
|
if shared_sections:
|
||||||
|
for locale_translation in new_translations.values():
|
||||||
|
for section_name, section_values in shared_sections.items():
|
||||||
|
locale_section = locale_translation.setdefault(section_name, {})
|
||||||
|
locale_section.update(section_values)
|
||||||
|
|
||||||
new_locales_code = locales_code_default + tuple(sorted(locales_code_extra))
|
new_locales_code = locales_code_default + tuple(sorted(locales_code_extra))
|
||||||
new_locales_name = {
|
new_locales_name = {
|
||||||
locale_code: new_translations[locale_code]["title"]["language"]
|
locale_code: new_translations[locale_code]["title"]["language"]
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 7.5 KiB |
BIN
static/img/banners/gsoc.png
Normal file
BIN
static/img/banners/gsoc.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.7 KiB |
@@ -16,7 +16,9 @@ $c-shadow-soft: #1C1A281F;
|
|||||||
$c-article-bd: #C0B9C491;
|
$c-article-bd: #C0B9C491;
|
||||||
|
|
||||||
$c-primary: #609A21;
|
$c-primary: #609A21;
|
||||||
$c-primary-ink: #609A21AA;
|
|
||||||
|
$c-banner: #F9AB00;
|
||||||
|
$c-banner-ink: #F9AB00AA;
|
||||||
|
|
||||||
$c-link: #0472D8;
|
$c-link: #0472D8;
|
||||||
$c-link-hover: #0053B9;
|
$c-link-hover: #0053B9;
|
||||||
@@ -180,12 +182,21 @@ body {
|
|||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
box-shadow: inset 0 0 0 4px $c-primary-ink;
|
box-shadow: inset 0 0 0 4px $c-banner-ink;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
table-layout: fixed;
|
||||||
}
|
}
|
||||||
|
|
||||||
td {
|
td {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
|
|
||||||
|
&:first-child,
|
||||||
|
&:last-child {
|
||||||
|
width: 128px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
img {
|
img {
|
||||||
@@ -193,7 +204,7 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
color: $c-primary;
|
color: $c-banner;
|
||||||
font-size: 2.5em;
|
font-size: 2.5em;
|
||||||
margin: 0 0 16px;
|
margin: 0 0 16px;
|
||||||
}
|
}
|
||||||
@@ -202,14 +213,14 @@ body {
|
|||||||
margin: 0em;
|
margin: 0em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.p-link {
|
|
||||||
margin-top: 16px;
|
|
||||||
color: $c-primary;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: $c-primary;
|
display: block;
|
||||||
|
margin-top: 16px;
|
||||||
|
overflow-wrap: anywhere;
|
||||||
|
word-break: break-word;
|
||||||
|
font-weight: bold;
|
||||||
|
color: $c-banner;
|
||||||
|
border: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -475,7 +486,7 @@ iframe {
|
|||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
p, .p-link {
|
p {
|
||||||
margin-top: 0.5em;
|
margin-top: 0.5em;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
{% include 'tmpl/_menu.htm' %}
|
{% include 'tmpl/_menu.htm' %}
|
||||||
|
|
||||||
<div id="article">
|
<div id="article">
|
||||||
{% include 'tmpl/_git.htm' %}
|
{% include 'tmpl/_banner.htm' %}
|
||||||
|
|
||||||
{% include 'tmpl/_article.htm' %}
|
{% include 'tmpl/_article.htm' %}
|
||||||
|
|
||||||
|
|||||||
17
templates/tmpl/_banner.htm
Normal file
17
templates/tmpl/_banner.htm
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<a id="banner" href="{{ _('banner:url') }}" target="_blank">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td valign="top" width="128">
|
||||||
|
<img src="{{ url_for('static', filename='img/logo.png') }}" alt="{{ _('title:index')}}">
|
||||||
|
</td>
|
||||||
|
<td valign="top">
|
||||||
|
<h1>{{ _('banner:header') }}</h1>
|
||||||
|
<p>{{ _('banner:text') }}</p>
|
||||||
|
<a href="{{ _('banner:url') }}">{{ _('banner:url') }}</a>
|
||||||
|
</td>
|
||||||
|
<td valign="top" width="128">
|
||||||
|
<img src="{{ url_for('static', filename='img/banners/' + _('banner:img')) }}" alt="{{ _('banner:alt') }}">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</a>
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
<a id="banner" href="https://git.kolibrios.org" target="_blank">
|
|
||||||
<table>
|
|
||||||
<tr>
|
|
||||||
<td valign="top" width="128">
|
|
||||||
<img src="{{ url_for('static', filename='img/logo.png') }}" alt="KolibriOS">
|
|
||||||
</td>
|
|
||||||
<td valign="top">
|
|
||||||
<h1>{{ _('git:header') }}</h1>
|
|
||||||
<p>{{ _('git:text') }}</p>
|
|
||||||
<p class="p-link">
|
|
||||||
<a href="https://git.kolibrios.org">https://git.kolibrios.org</a>
|
|
||||||
</p>
|
|
||||||
</td>
|
|
||||||
<td valign="top" width="128">
|
|
||||||
<img src="{{ url_for('static', filename='img/gitea.png') }}" alt="Gitea">
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</a>
|
|
||||||
Reference in New Issue
Block a user