From 2d727cc1eeb926f5b5ee578a0ee54269e0390a96 Mon Sep 17 00:00:00 2001 From: SayaAndy Date: Sat, 2 May 2026 12:58:40 +0700 Subject: refactor: parametrize static & photo storage url refactor: parametrize allow origins --- config/config.prod.yaml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'config/config.prod.yaml') diff --git a/config/config.prod.yaml b/config/config.prod.yaml index b40ba57..2c5a159 100644 --- a/config/config.prod.yaml +++ b/config/config.prod.yaml @@ -47,3 +47,25 @@ mail: canonicalEndpoint: 'https://${FQDN}' meta: googleSiteVerification: '${GOOGLE_SITE_VERIFICATION}' +photoStorage: + full: + baseUrl: https://f003.backblazeb2.com/file/sayana-photos/full/%s + webp: + baseUrl: https://f003.backblazeb2.com/file/sayana-photos/webp/%s.webp + thumbnail1600p: + baseUrl: https://f003.backblazeb2.com/file/sayana-photos/webp-1600p/%s.webp + thumbnail1200p: + baseUrl: https://f003.backblazeb2.com/file/sayana-photos/webp-1200p/%s.webp + thumbnail800p: + baseUrl: https://f003.backblazeb2.com/file/sayana-photos/webp-800p/%s.webp + thumbnail560p: + baseUrl: https://f003.backblazeb2.com/file/sayana-photos/webp-560p/%s.webp + thumbnail320p: + baseUrl: https://f003.backblazeb2.com/file/sayana-photos/webp-320p/%s.webp + homePageGifs: + baseUrl: https://f003.backblazeb2.com/file/sayana-static/home-page-gifs/otter-%s.gif + indexes: ['1', '2', '3'] +staticStorage: + baseUrl: https://f003.backblazeb2.com/file/sayana-static +allowOrigins: + - https://f003.backblazeb2.com -- cgit v1.3.1+13 From 3898baa47faf268864ecac3699f7e98c6cac01a4 Mon Sep 17 00:00:00 2001 From: SayaAndy Date: Sat, 2 May 2026 13:23:37 +0700 Subject: feat: use yandexcloud.kz for photos & static --- config/config.local.yaml | 24 ++++++++++++------------ config/config.prod.yaml | 24 ++++++++++++------------ config/config.stage.yaml | 24 ++++++++++++------------ static/input.css | 10 +++++----- 4 files changed, 41 insertions(+), 41 deletions(-) (limited to 'config/config.prod.yaml') diff --git a/config/config.local.yaml b/config/config.local.yaml index d312504..fb79e97 100644 --- a/config/config.local.yaml +++ b/config/config.local.yaml @@ -22,11 +22,11 @@ localePath: ./locale/ availableLanguages: - name: ru alt: Русский - flag: https://f003.backblazeb2.com/file/sayana-static/flags/ru.svg + flag: https://storage.yandexcloud.kz/sayauz-static/flags/ru.svg locFile: localization.ru.yaml - name: en alt: English - flag: https://f003.backblazeb2.com/file/sayana-static/flags/gb.svg + flag: https://storage.yandexcloud.kz/sayauz-static/flags/gb.svg locFile: localization.en.yaml auth: db: @@ -48,23 +48,23 @@ mail: canonicalEndpoint: 'http://127.0.0.1:3000' photoStorage: full: - baseUrl: https://f003.backblazeb2.com/file/sayana-photos/full/%s + baseUrl: https://storage.yandexcloud.kz/sayauz-photos/%s webp: - baseUrl: https://f003.backblazeb2.com/file/sayana-photos/webp/%s.webp + baseUrl: https://storage.yandexcloud.kz/sayauz-thumbnails-webp/%s.webp thumbnail1600p: - baseUrl: https://f003.backblazeb2.com/file/sayana-photos/webp-1600p/%s.webp + baseUrl: https://storage.yandexcloud.kz/sayauz-thumbnails-webp1600/%s.webp thumbnail1200p: - baseUrl: https://f003.backblazeb2.com/file/sayana-photos/webp-1200p/%s.webp + baseUrl: https://storage.yandexcloud.kz/sayauz-thumbnails-webp1200/%s.webp thumbnail800p: - baseUrl: https://f003.backblazeb2.com/file/sayana-photos/webp-800p/%s.webp + baseUrl: https://storage.yandexcloud.kz/sayauz-thumbnails-webp800/%s.webp thumbnail560p: - baseUrl: https://f003.backblazeb2.com/file/sayana-photos/webp-560p/%s.webp + baseUrl: https://storage.yandexcloud.kz/sayauz-thumbnails-webp560/%s.webp thumbnail320p: - baseUrl: https://f003.backblazeb2.com/file/sayana-photos/webp-320p/%s.webp + baseUrl: https://storage.yandexcloud.kz/sayauz-thumbnails-webp320/%s.webp homePageGifs: - baseUrl: https://f003.backblazeb2.com/file/sayana-static/home-page-gifs/otter-%s.gif + baseUrl: https://storage.yandexcloud.kz/sayauz-static/home-page-gifs/otter-%s.gif indexes: ['1', '2', '3'] staticStorage: - baseUrl: https://f003.backblazeb2.com/file/sayana-static + baseUrl: https://storage.yandexcloud.kz/sayauz-static allowOrigins: - - https://f003.backblazeb2.com + - https://storage.yandexcloud.kz diff --git a/config/config.prod.yaml b/config/config.prod.yaml index 2c5a159..868e242 100644 --- a/config/config.prod.yaml +++ b/config/config.prod.yaml @@ -22,11 +22,11 @@ localePath: ./locale/ availableLanguages: - name: ru alt: Русский - flag: https://f003.backblazeb2.com/file/sayana-static/flags/ru.svg + flag: https://storage.yandexcloud.kz/sayauz-static/flags/ru.svg locFile: localization.ru.yaml - name: en alt: English - flag: https://f003.backblazeb2.com/file/sayana-static/flags/gb.svg + flag: https://storage.yandexcloud.kz/sayauz-static/flags/gb.svg locFile: localization.en.yaml auth: db: @@ -49,23 +49,23 @@ meta: googleSiteVerification: '${GOOGLE_SITE_VERIFICATION}' photoStorage: full: - baseUrl: https://f003.backblazeb2.com/file/sayana-photos/full/%s + baseUrl: https://storage.yandexcloud.kz/sayauz-photos/%s webp: - baseUrl: https://f003.backblazeb2.com/file/sayana-photos/webp/%s.webp + baseUrl: https://storage.yandexcloud.kz/sayauz-thumbnails-webp/%s.webp thumbnail1600p: - baseUrl: https://f003.backblazeb2.com/file/sayana-photos/webp-1600p/%s.webp + baseUrl: https://storage.yandexcloud.kz/sayauz-thumbnails-webp1600/%s.webp thumbnail1200p: - baseUrl: https://f003.backblazeb2.com/file/sayana-photos/webp-1200p/%s.webp + baseUrl: https://storage.yandexcloud.kz/sayauz-thumbnails-webp1200/%s.webp thumbnail800p: - baseUrl: https://f003.backblazeb2.com/file/sayana-photos/webp-800p/%s.webp + baseUrl: https://storage.yandexcloud.kz/sayauz-thumbnails-webp800/%s.webp thumbnail560p: - baseUrl: https://f003.backblazeb2.com/file/sayana-photos/webp-560p/%s.webp + baseUrl: https://storage.yandexcloud.kz/sayauz-thumbnails-webp560/%s.webp thumbnail320p: - baseUrl: https://f003.backblazeb2.com/file/sayana-photos/webp-320p/%s.webp + baseUrl: https://storage.yandexcloud.kz/sayauz-thumbnails-webp320/%s.webp homePageGifs: - baseUrl: https://f003.backblazeb2.com/file/sayana-static/home-page-gifs/otter-%s.gif + baseUrl: https://storage.yandexcloud.kz/sayauz-static/home-page-gifs/otter-%s.gif indexes: ['1', '2', '3'] staticStorage: - baseUrl: https://f003.backblazeb2.com/file/sayana-static + baseUrl: https://storage.yandexcloud.kz/sayauz-static allowOrigins: - - https://f003.backblazeb2.com + - https://storage.yandexcloud.kz diff --git a/config/config.stage.yaml b/config/config.stage.yaml index 0889c19..ab86709 100644 --- a/config/config.stage.yaml +++ b/config/config.stage.yaml @@ -22,11 +22,11 @@ localePath: ./locale/ availableLanguages: - name: ru alt: Русский - flag: https://f003.backblazeb2.com/file/sayana-static/flags/ru.svg + flag: https://storage.yandexcloud.kz/sayauz-static/flags/ru.svg locFile: localization.ru.yaml - name: en alt: English - flag: https://f003.backblazeb2.com/file/sayana-static/flags/gb.svg + flag: https://storage.yandexcloud.kz/sayauz-static/flags/gb.svg locFile: localization.en.yaml auth: db: @@ -47,23 +47,23 @@ mail: canonicalEndpoint: 'https://${FQDN}' photoStorage: full: - baseUrl: https://f003.backblazeb2.com/file/sayana-photos/full/%s + baseUrl: https://storage.yandexcloud.kz/sayauz-photos/%s webp: - baseUrl: https://f003.backblazeb2.com/file/sayana-photos/webp/%s.webp + baseUrl: https://storage.yandexcloud.kz/sayauz-thumbnails-webp/%s.webp thumbnail1600p: - baseUrl: https://f003.backblazeb2.com/file/sayana-photos/webp-1600p/%s.webp + baseUrl: https://storage.yandexcloud.kz/sayauz-thumbnails-webp1600/%s.webp thumbnail1200p: - baseUrl: https://f003.backblazeb2.com/file/sayana-photos/webp-1200p/%s.webp + baseUrl: https://storage.yandexcloud.kz/sayauz-thumbnails-webp1200/%s.webp thumbnail800p: - baseUrl: https://f003.backblazeb2.com/file/sayana-photos/webp-800p/%s.webp + baseUrl: https://storage.yandexcloud.kz/sayauz-thumbnails-webp800/%s.webp thumbnail560p: - baseUrl: https://f003.backblazeb2.com/file/sayana-photos/webp-560p/%s.webp + baseUrl: https://storage.yandexcloud.kz/sayauz-thumbnails-webp560/%s.webp thumbnail320p: - baseUrl: https://f003.backblazeb2.com/file/sayana-photos/webp-320p/%s.webp + baseUrl: https://storage.yandexcloud.kz/sayauz-thumbnails-webp320/%s.webp homePageGifs: - baseUrl: https://f003.backblazeb2.com/file/sayana-static/home-page-gifs/otter-%s.gif + baseUrl: https://storage.yandexcloud.kz/sayauz-static/home-page-gifs/otter-%s.gif indexes: ['1', '2', '3'] staticStorage: - baseUrl: https://f003.backblazeb2.com/file/sayana-static + baseUrl: https://storage.yandexcloud.kz/sayauz-static allowOrigins: - - https://f003.backblazeb2.com + - https://storage.yandexcloud.kz diff --git a/static/input.css b/static/input.css index 1a4d922..cc4ddb6 100644 --- a/static/input.css +++ b/static/input.css @@ -137,7 +137,7 @@ body { --color-leaflet-text: var(--color-main-hard); --color-leaflet-link: var(--color-main-medium); --color-leaflet-link-hover: var(--color-main-soft); - --interlocked-hexagons-background: url('https://f003.backblazeb2.com/file/sayana-static/themes/lettuce/linen-fabric.webp'), url('https://f003.backblazeb2.com/file/sayana-static/themes/lettuce/lettuce-tiles.svg'); + --interlocked-hexagons-background: url('https://storage.yandexcloud.kz/sayauz-static/themes/lettuce/linen-fabric.webp'), url('https://storage.yandexcloud.kz/sayauz-static/themes/lettuce/lettuce-tiles.svg'); --interlocked-hexagons-background-repeat: repeat, repeat; --interlocked-hexagons-background-size: 11dvh, 20dvh; --squares-and-triangles-background: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22100%22%20height%3D%22100%22%3E%3Crect%20width%3D%22100%25%22%20height%3D%22100%25%22%20fill%3D%22%23bbd095%22%2F%3E%3Cpath%20fill%3D%22%23f5ede1%22%20d%3D%22M0%200v6.77L6.72%200zm8.91%200L0%208.96v3.86L12.83%200zm6.11%200L0%2015.06v3.87L18.9%200zm6.11%200L0%2021.12v3.92L25%200zM25%200l25%2024.99v-3.87L28.87%200zm25%2024.99%2025%2024.98L100%2025%2075%200zm-50%20.05v3.87l21.13%2021.12H25l-25-25zm25%2024.99h3.87L50%2028.9v-3.87zm0%200L0%2075l25%2025%2025-24.99zM50%2075l25-24.98h-3.87L50%2071.14v3.87zm0%200v3.87L71.13%20100H75L50%2075.01zm25%2025h3.87L100%2078.88v-3.87zm25-24.99v-3.87L78.87%2050.03H75L100%2075zM31.1%200%2050%2018.93v-3.87L34.98%200h-3.87zm6.07%200L50%2012.82V8.96L41.04%200zm6.1%200L50%206.77V0h-6.72zM25%202.19%202.14%2025.04H25zm0%2022.85v22.8l22.81-22.8zM75%203.92l21.13%2021.12L75%2046.16%2053.87%2025.04zm0%202.19L56.06%2025.04l18.89%2018.88%2018.94-18.88L75%206.1zm0%203.92%2015.07%2015L75%2040.06%2059.98%2025.04zm0%202.18L62.17%2025.04%2075%2037.86l12.83-12.82L75%2012.2zm0%203.82%208.96%209L75%2033.95%2066.04%2025zm0%202.24-6.72%206.77L75%2031.76l6.77-6.72h-.05zM0%2031.09v3.87l15.02%2015.07h3.87zm50%200L31.1%2050.03h3.88L50%2034.96V31.1zM0%2037.2v3.87l8.91%208.96h3.92zm50%200L37.17%2050.03h3.87L50%2041.07zM0%2043.3v6.73h6.72zm50%200-6.72%206.73H50zm0%206.73v6.71l6.72-6.71zm8.96%200L50%2058.93v3.92l12.83-12.82zm6.06%200L50%2065.03v3.88l18.94-18.88zm16.09%200L100%2068.9v-3.87l-15.02-15zm6.11%200L100%2062.85v-3.92l-8.91-8.9zm6.06%200%206.72%206.71v-6.71zM75%2052.2%2052.19%2075H75zM75%2075v22.8L97.81%2075zM25%2053.9l21.13%2021.12L25%2096.13%203.87%2075.01zm0%202.2L6.1%2074.95l18.95%2018.88%2018.9-18.88L25%2056.08zm0%203.9%2015.02%2015.01L25%2090.03%209.98%2075zm0%202.19L12.17%2075%2025%2087.84%2037.83%2075%2025%2062.2zm0%203.87L33.96%2075%2025%2083.97%2016.04%2075zm0%202.23-6.72%206.72L25%2081.73l6.72-6.72L25%2068.3zm25%2012.83v3.87L65.02%20100h3.87zm50%200L81.1%20100h3.88L100%2084.99zm-50%206.06v3.86l8.96%208.96h3.87zm50%200L87.22%20100h3.87l8.91-8.96zm-50%206.1V100h6.72zm50%200L93.28%20100H100z%22%2F%3E%3C%2Fsvg%3E"); @@ -197,10 +197,10 @@ body { --color-leaflet-text: var(--color-background-dark); --color-leaflet-link: var(--color-background-dark); --color-leaflet-link-hover: var(--color-background-light); - --interlocked-hexagons-background: url('https://f003.backblazeb2.com/file/sayana-static/themes/ram/ram-background.webp'); + --interlocked-hexagons-background: url('https://storage.yandexcloud.kz/sayauz-static/themes/ram/ram-background.webp'); --interlocked-hexagons-background-repeat: repeat; --interlocked-hexagons-background-size: auto; - --squares-and-triangles-background: url('https://f003.backblazeb2.com/file/sayana-static/themes/ram/ram-sidebar.webp'); + --squares-and-triangles-background: url('https://storage.yandexcloud.kz/sayauz-static/themes/ram/ram-sidebar.webp'); --squares-and-triangles-background-repeat: repeat; --squares-and-triangles-background-width-coef: 5; --squares-and-triangles-background-height-coef: 15; @@ -234,8 +234,8 @@ body { --squares-and-triangles-background-repeat: repeat; --squares-and-triangles-background-width-coef: 5; --squares-and-triangles-background-height-coef: 5; - --split-left-background: url('https://f003.backblazeb2.com/file/sayana-static/themes/lilac/split-left.webp'); - --split-right-background: url('https://f003.backblazeb2.com/file/sayana-static/themes/lilac/split-right.webp'); + --split-left-background: url('https://storage.yandexcloud.kz/sayauz-static/themes/lilac/split-left.webp'); + --split-right-background: url('https://storage.yandexcloud.kz/sayauz-static/themes/lilac/split-right.webp'); } a, .linklike { -- cgit v1.3.1+13 From 03ff00d2e2e59f695bb14f346b4cc8fdbfc5d12a Mon Sep 17 00:00:00 2001 From: Montferrat Date: Sat, 2 May 2026 18:19:08 +0700 Subject: feat: rename saya.today to saya.uz --- config/config.local.yaml | 36 +- config/config.prod.yaml | 38 +- config/config.stage.yaml | 36 +- locale/localization.en.yaml | 120 +++--- locale/localization.ru.yaml | 132 +++---- views/layouts/general-mail.html | 196 +++++----- views/pages/global-map.html | 630 +++++++++++++++++++------------- views/pages/unsubscribe-page.html | 87 +++-- views/partials/general-page-footer.html | 26 +- views/partials/general-page-header.html | 10 +- 10 files changed, 744 insertions(+), 567 deletions(-) (limited to 'config/config.prod.yaml') diff --git a/config/config.local.yaml b/config/config.local.yaml index fb79e97..7769438 100644 --- a/config/config.local.yaml +++ b/config/config.local.yaml @@ -5,19 +5,19 @@ blogPages: config: bucketName: sayana-pages region: eu-central-003 - prefix: 'stage-' - keyID: '${B2_KEY_ID}' - applicationKey: '${B2_APPLICATION_KEY}' + prefix: "stage-" + keyID: "${B2_KEY_ID}" + applicationKey: "${B2_APPLICATION_KEY}" factGiver: storage: type: b2 config: bucketName: sayana-pages region: eu-central-003 - prefix: '' - keyID: '${B2_KEY_ID}' - applicationKey: '${B2_APPLICATION_KEY}' - factsFileName: 'facts-*.txt' + prefix: "" + keyID: "${B2_KEY_ID}" + applicationKey: "${B2_APPLICATION_KEY}" + factsFileName: "facts-*.txt" localePath: ./locale/ availableLanguages: - name: ru @@ -33,19 +33,19 @@ auth: type: sqlite3 config: # dsn: 'file:/tmp/auth.db?cache=shared&mode=rwc&_journal_mode=WAL' - dsn: 'file:/tmp/auth.db?cache=private&mode=rwc&_locking_mode=EXCLUSIVE&_mutex=no&_auto_vacuum=2&_journal_mode=WAL' - salt: '123' + dsn: "file:/tmp/auth.db?cache=private&mode=rwc&_locking_mode=EXCLUSIVE&_mutex=no&_auto_vacuum=2&_journal_mode=WAL" + salt: "123" mail: - clientHost: '127.0.0.1:3000' - mailHost: '${MAIL_HOST}' - publicName: 'LOCAL.SAYA.TODAY' - mailAddress: '${MAIL_ADDRESS}' - username: '${MAIL_USERNAME}' - password: '${MAIL_PASSWORD}' - salt: '${MAIL_SALT}' + clientHost: "127.0.0.1:3000" + mailHost: "${MAIL_HOST}" + publicName: "LOCAL.SAYA.UZ" + mailAddress: "${MAIL_ADDRESS}" + username: "${MAIL_USERNAME}" + password: "${MAIL_PASSWORD}" + salt: "${MAIL_SALT}" trigger: onNewPost: "* * * * *" -canonicalEndpoint: 'http://127.0.0.1:3000' +canonicalEndpoint: "http://127.0.0.1:3000" photoStorage: full: baseUrl: https://storage.yandexcloud.kz/sayauz-photos/%s @@ -63,7 +63,7 @@ photoStorage: baseUrl: https://storage.yandexcloud.kz/sayauz-thumbnails-webp320/%s.webp homePageGifs: baseUrl: https://storage.yandexcloud.kz/sayauz-static/home-page-gifs/otter-%s.gif - indexes: ['1', '2', '3'] + indexes: ["1", "2", "3"] staticStorage: baseUrl: https://storage.yandexcloud.kz/sayauz-static allowOrigins: diff --git a/config/config.prod.yaml b/config/config.prod.yaml index 868e242..91f606f 100644 --- a/config/config.prod.yaml +++ b/config/config.prod.yaml @@ -5,19 +5,19 @@ blogPages: config: bucketName: sayana-pages region: eu-central-003 - prefix: 'prod-' - keyID: '${B2_KEY_ID}' - applicationKey: '${B2_APPLICATION_KEY}' + prefix: "prod-" + keyID: "${B2_KEY_ID}" + applicationKey: "${B2_APPLICATION_KEY}" factGiver: storage: type: b2 config: bucketName: sayana-pages region: eu-central-003 - prefix: '' - keyID: '${B2_KEY_ID}' - applicationKey: '${B2_APPLICATION_KEY}' - factsFileName: 'facts-*.txt' + prefix: "" + keyID: "${B2_KEY_ID}" + applicationKey: "${B2_APPLICATION_KEY}" + factsFileName: "facts-*.txt" localePath: ./locale/ availableLanguages: - name: ru @@ -32,21 +32,21 @@ auth: db: type: sqlite3 config: - dsn: 'file:/data/auth.db?cache=private&mode=rwc&_locking_mode=EXCLUSIVE&_mutex=no&_auto_vacuum=2&_journal_mode=WAL' - salt: '${AUTH_SALT}' + dsn: "file:/data/auth.db?cache=private&mode=rwc&_locking_mode=EXCLUSIVE&_mutex=no&_auto_vacuum=2&_journal_mode=WAL" + salt: "${AUTH_SALT}" mail: - clientHost: '${FQDN}' - mailHost: '${MAIL_HOST}' - publicName: 'SAYA.TODAY' - mailAddress: '${MAIL_ADDRESS}' - username: '${MAIL_USERNAME}' - password: '${MAIL_PASSWORD}' - salt: '${MAIL_SALT}' + clientHost: "${FQDN}" + mailHost: "${MAIL_HOST}" + publicName: "SAYA.UZ" + mailAddress: "${MAIL_ADDRESS}" + username: "${MAIL_USERNAME}" + password: "${MAIL_PASSWORD}" + salt: "${MAIL_SALT}" trigger: onNewPost: "0/5 * * * *" -canonicalEndpoint: 'https://${FQDN}' +canonicalEndpoint: "https://${FQDN}" meta: - googleSiteVerification: '${GOOGLE_SITE_VERIFICATION}' + googleSiteVerification: "${GOOGLE_SITE_VERIFICATION}" photoStorage: full: baseUrl: https://storage.yandexcloud.kz/sayauz-photos/%s @@ -64,7 +64,7 @@ photoStorage: baseUrl: https://storage.yandexcloud.kz/sayauz-thumbnails-webp320/%s.webp homePageGifs: baseUrl: https://storage.yandexcloud.kz/sayauz-static/home-page-gifs/otter-%s.gif - indexes: ['1', '2', '3'] + indexes: ["1", "2", "3"] staticStorage: baseUrl: https://storage.yandexcloud.kz/sayauz-static allowOrigins: diff --git a/config/config.stage.yaml b/config/config.stage.yaml index ab86709..3f1381b 100644 --- a/config/config.stage.yaml +++ b/config/config.stage.yaml @@ -5,19 +5,19 @@ blogPages: config: bucketName: sayana-pages region: eu-central-003 - prefix: 'stage-' - keyID: '${B2_KEY_ID}' - applicationKey: '${B2_APPLICATION_KEY}' + prefix: "stage-" + keyID: "${B2_KEY_ID}" + applicationKey: "${B2_APPLICATION_KEY}" factGiver: storage: type: b2 config: bucketName: sayana-pages region: eu-central-003 - prefix: '' - keyID: '${B2_KEY_ID}' - applicationKey: '${B2_APPLICATION_KEY}' - factsFileName: 'facts-*.txt' + prefix: "" + keyID: "${B2_KEY_ID}" + applicationKey: "${B2_APPLICATION_KEY}" + factsFileName: "facts-*.txt" localePath: ./locale/ availableLanguages: - name: ru @@ -32,19 +32,19 @@ auth: db: type: sqlite3 config: - dsn: 'file:/data/auth.db?cache=private&mode=rwc&_locking_mode=EXCLUSIVE&_mutex=no&_auto_vacuum=2&_journal_mode=WAL' - salt: '${AUTH_SALT}' + dsn: "file:/data/auth.db?cache=private&mode=rwc&_locking_mode=EXCLUSIVE&_mutex=no&_auto_vacuum=2&_journal_mode=WAL" + salt: "${AUTH_SALT}" mail: - clientHost: '${FQDN}' - mailHost: '${MAIL_HOST}' - publicName: 'DEMO.SAYA.TODAY' - mailAddress: '${MAIL_ADDRESS}' - username: '${MAIL_USERNAME}' - password: '${MAIL_PASSWORD}' - salt: '${MAIL_SALT}' + clientHost: "${FQDN}" + mailHost: "${MAIL_HOST}" + publicName: "STAGE.SAYA.UZ" + mailAddress: "${MAIL_ADDRESS}" + username: "${MAIL_USERNAME}" + password: "${MAIL_PASSWORD}" + salt: "${MAIL_SALT}" trigger: onNewPost: "0/3 * * * *" -canonicalEndpoint: 'https://${FQDN}' +canonicalEndpoint: "https://${FQDN}" photoStorage: full: baseUrl: https://storage.yandexcloud.kz/sayauz-photos/%s @@ -62,7 +62,7 @@ photoStorage: baseUrl: https://storage.yandexcloud.kz/sayauz-thumbnails-webp320/%s.webp homePageGifs: baseUrl: https://storage.yandexcloud.kz/sayauz-static/home-page-gifs/otter-%s.gif - indexes: ['1', '2', '3'] + indexes: ["1", "2", "3"] staticStorage: baseUrl: https://storage.yandexcloud.kz/sayauz-static allowOrigins: diff --git a/locale/localization.en.yaml b/locale/localization.en.yaml index 9923881..10bcb94 100644 --- a/locale/localization.en.yaml +++ b/locale/localization.en.yaml @@ -1,77 +1,77 @@ -TagsLabel: 'Tags:' +TagsLabel: "Tags:" BlogSearch: - Header: 'Blog Search' + Header: "Blog Search" Description: "The Saya Blog posts' list" - TagsHeader: 'Tags' - OrderByHeader: 'Order by...' - TitleOrdered: 'Title' - ActionDateOrdered: 'Action Date' - PublicationDateOrdered: 'Publication Date' - ChooseAllTags: 'Choose All' + TagsHeader: "Tags" + OrderByHeader: "Order by..." + TitleOrdered: "Title" + ActionDateOrdered: "Action Date" + PublicationDateOrdered: "Publication Date" + ChooseAllTags: "Choose All" GlobalMap: - Header: 'Global Map' + Header: "Global Map" Description: "Global map with all the tags of places I've been to" HomePage: - Header: 'Home Page' - Contacts: 'Contacts' - DidYouKnowThat: 'Did you know, that...' - SidebarDescription: 'Describing the Sidebar' - HomePageDescription: 'Home Page -- where we are right now!' - BlogSearchDescription: 'Blog Search. You can find my travel notes there and, maybe, something else!' - MarkerMapDescription: 'Map with markers of my travel notes -- a convinient way to find an interesting region and find related posts!' - ThemeSwitchDescription: 'Theme Palette lets you change the theme of the site -- there are 2 dark and 2 bright themes currently!' - Hymn1: 'We welcome you to Sayasite!' + Header: "Home Page" + Contacts: "Contacts" + DidYouKnowThat: "Did you know, that..." + SidebarDescription: "Describing the Sidebar" + HomePageDescription: "Home Page -- where we are right now!" + BlogSearchDescription: "Blog Search. You can find my travel notes there and, maybe, something else!" + MarkerMapDescription: "Map with markers of my travel notes -- a convinient way to find an interesting region and find related posts!" + ThemeSwitchDescription: "Theme Palette lets you change the theme of the site -- there are 2 dark and 2 bright themes currently!" + Hymn1: "We welcome you to Sayasite!" Hymn2: "We've been expecting you!" - Hymn3: 'You bring such joy in Sayasite!' - Hymn4: 'No matter where you roam, know our love is true!~' + Hymn3: "You bring such joy in Sayasite!" + Hymn4: "No matter where you roam, know our love is true!~" UnsubscribePage: - Header: 'Cancelling the Subscription' - UnsetCode: 'Your cancel code is not set. You just having a walk around the site?' + Header: "Cancelling the Subscription" + UnsetCode: "Your cancel code is not set. You just having a walk around the site?" InvalidCode: "Your cancel code could not be verified. Maybe, the code expired after a day. Or maybe, you've already unsubscribed." OnServerError: "We couldn't unsubscribe you, the problem is on our side! We will solve this problem as soon as possible." - Success: 'Cancelled your subscription successfully! We do hope we will engage you again someday.' + Success: "Cancelled your subscription successfully! We do hope we will engage you again someday." Metadata: - Published: 'Published' - Action: 'Took place on' + Published: "Published" + Action: "Took place on" Mail: - UnsubscribeFooter: 'If this letter got you in a bad mood, you can unsubscribe from my blog by {}this link{/}.' + UnsubscribeFooter: "If this letter got you in a bad mood, you can unsubscribe from my blog by {}this link{/}." VerifyEmail: - Subject: 'Verification Link for SAYA.TODAY is waiting for you!' - Welcome: 'Greetings!' - Intro: 'There are 2 ways for us to validate your profile:' - GotoLink: 'Go by this link:' + Subject: "Verification Link for SAYA.UZ is waiting for you!" + Welcome: "Greetings!" + Intro: "There are 2 ways for us to validate your profile:" + GotoLink: "Go by this link:" InputCode: "Or input this code on the personal page:" - IfRandom: 'If you are unsure what this letter this, you can ignore it, and also, if you are interested, you may visit my site :)' + IfRandom: "If you are unsure what this letter this, you can ignore it, and also, if you are interested, you may visit my site :)" NewPost: - Subject: 'A new post arrived at SAYA.TODAY!' - Intro: 'A new post came!' - CapturedOn: 'Captured on' + Subject: "A new post arrived at SAYA.UZ!" + Intro: "A new post came!" + CapturedOn: "Captured on" UserProfile: - Header: 'Personal Settings' - Description: 'Set and verify your e-mail here, as well as subscribe to favorite blog tags' - EmailHeader: 'E-Mail' - VerificationCodeHeader: 'Verification Code' - TypeEmail: 'Please type your email' - SendCodeButton: 'Send Code' - VerifyButton: 'Verify' - VerificationCodeSent: 'Verification code sent! Please check your e-mail. Your next verification attempt will be possible on {}.' - DelayTilVerification: 'You have already requested the verification before! Please wait until {} for a new verification request.' - FailedEmailRender: 'Failed to render the email status message, please ask administrator for a more detailed cause.' - VerificationCodeSendingError: 'Failed to send a verification code, please ask administrator for a more detailed cause.' - EmailAlreadyValidated: 'You already have this E-Mail validated.' - EmailTaken: 'This E-Mail is already taken.' - EmailEmpty: 'E-Mail is unset or empty.' - VerificationSuccess: 'Success! You are now able to subscribe with your new e-mail.' - VerificationFailed: 'Verification code is invalid, please ask administrator for a more detailed cause.' - VerificationEmpty: 'Verification code is unset or empty.' - SubscriptionHeader: 'Subscribe to...' - TagsNone: 'None' - TagsAll: 'All' - TagsSpecific: 'Specific' + Header: "Personal Settings" + Description: "Set and verify your e-mail here, as well as subscribe to favorite blog tags" + EmailHeader: "E-Mail" + VerificationCodeHeader: "Verification Code" + TypeEmail: "Please type your email" + SendCodeButton: "Send Code" + VerifyButton: "Verify" + VerificationCodeSent: "Verification code sent! Please check your e-mail. Your next verification attempt will be possible on {}." + DelayTilVerification: "You have already requested the verification before! Please wait until {} for a new verification request." + FailedEmailRender: "Failed to render the email status message, please ask administrator for a more detailed cause." + VerificationCodeSendingError: "Failed to send a verification code, please ask administrator for a more detailed cause." + EmailAlreadyValidated: "You already have this E-Mail validated." + EmailTaken: "This E-Mail is already taken." + EmailEmpty: "E-Mail is unset or empty." + VerificationSuccess: "Success! You are now able to subscribe with your new e-mail." + VerificationFailed: "Verification code is invalid, please ask administrator for a more detailed cause." + VerificationEmpty: "Verification code is unset or empty." + SubscriptionHeader: "Subscribe to..." + TagsNone: "None" + TagsAll: "All" + TagsSpecific: "Specific" TagDoesNotExist: 'The tag "{}" does not exist on the site.' TagAlreadyAdded: 'The tag "{}" is already in your subscribed list.' - SaveButton: 'Save' - SubscribeInvalidType: 'Invalid subscription type.' - FailedToSubscribe: 'Failed to subscribe by new settings, please ask administrator for a more detailed cause.' - SubscribedSuccessfully: 'Successfully subscribed you by new settings!' - RefreshPage: 'Please refresh the profile page on the device, where you requested the code.' + SaveButton: "Save" + SubscribeInvalidType: "Invalid subscription type." + FailedToSubscribe: "Failed to subscribe by new settings, please ask administrator for a more detailed cause." + SubscribedSuccessfully: "Successfully subscribed you by new settings!" + RefreshPage: "Please refresh the profile page on the device, where you requested the code." diff --git a/locale/localization.ru.yaml b/locale/localization.ru.yaml index 34e5387..17e1e41 100644 --- a/locale/localization.ru.yaml +++ b/locale/localization.ru.yaml @@ -1,77 +1,77 @@ -TagsLabel: 'Тэги:' +TagsLabel: "Тэги:" BlogSearch: - Header: 'Поиск по блогу' - Description: 'Каталог записей Saya Blog' - TagsHeader: 'Тэги' - OrderByHeader: 'Упорядочить по...' - TitleOrdered: 'названию' - ActionDateOrdered: 'дате действия' - PublicationDateOrdered: 'времени публикации' - ChooseAllTags: 'Выбрать все' + Header: "Поиск по блогу" + Description: "Каталог записей Saya Blog" + TagsHeader: "Тэги" + OrderByHeader: "Упорядочить по..." + TitleOrdered: "названию" + ActionDateOrdered: "дате действия" + PublicationDateOrdered: "времени публикации" + ChooseAllTags: "Выбрать все" GlobalMap: - Header: 'Глобальная карта' - Description: 'Глобальная карта с метками мест, где я побывал' + Header: "Глобальная карта" + Description: "Глобальная карта с метками мест, где я побывал" HomePage: - Header: 'Домашняя страница' - Contacts: 'Контакты' - DidYouKnowThat: 'А вы знали, что...' - SidebarDescription: 'Поясняем за сайдбар' - HomePageDescription: 'Домашняя страница -- где мы сейчас и находимся!' - BlogSearchDescription: 'Поиск по блогу. Там размещены мои путевые заметки и, может, что-то ещё!' - MarkerMapDescription: 'Карта с маркерами моих путевых заметок, -- удобный способ найти интересный регион и перейти на заинтересовавшие посты!' - ThemeSwitchDescription: 'Позволяет поменять тему сайта -- есть 2 светлые и 2 тёмные темы!' - Hymn1: 'Приветствуем Вас на Саясайте!' - Hymn2: 'Мы Вас столько ждали!' - Hymn3: 'Столько радости от Вас на Саясайте!' - Hymn4: 'Где бы Вы не были, знайте, -- наша любовь крепка!' + Header: "Домашняя страница" + Contacts: "Контакты" + DidYouKnowThat: "А вы знали, что..." + SidebarDescription: "Поясняем за сайдбар" + HomePageDescription: "Домашняя страница -- где мы сейчас и находимся!" + BlogSearchDescription: "Поиск по блогу. Там размещены мои путевые заметки и, может, что-то ещё!" + MarkerMapDescription: "Карта с маркерами моих путевых заметок, -- удобный способ найти интересный регион и перейти на заинтересовавшие посты!" + ThemeSwitchDescription: "Позволяет поменять тему сайта -- есть 2 светлые и 2 тёмные темы!" + Hymn1: "Приветствуем Вас на Саясайте!" + Hymn2: "Мы Вас столько ждали!" + Hymn3: "Столько радости от Вас на Саясайте!" + Hymn4: "Где бы Вы не были, знайте, -- наша любовь крепка!" UnsubscribePage: - Header: 'Отписка' - UnsetCode: 'Код для отписки не проставлен. Вы случайно не заблудились?' - InvalidCode: 'Код для отписки не подтверждён. Может, истекло время в сутки для кода. А может, вы уже успели отписаться.' - OnServerError: 'Мы не смогли вас отписать, проблема на нашей стороне! В скором времени займёмся проблемой.' - Success: 'Вы отписались от рассылки! Надеюсь, мы ещё сможем вас заинтересовать.' + Header: "Отписка" + UnsetCode: "Код для отписки не проставлен. Вы случайно не заблудились?" + InvalidCode: "Код для отписки не подтверждён. Может, истекло время в сутки для кода. А может, вы уже успели отписаться." + OnServerError: "Мы не смогли вас отписать, проблема на нашей стороне! В скором времени займёмся проблемой." + Success: "Вы отписались от рассылки! Надеюсь, мы ещё сможем вас заинтересовать." Metadata: - Published: 'Опубликовано' - Action: 'Время действия' + Published: "Опубликовано" + Action: "Время действия" Mail: - UnsubscribeFooter: 'Если данное письмо пришло вам случайно, либо вы хотите отписаться, можете перейти по {}этой ссылке{/}.' + UnsubscribeFooter: "Если данное письмо пришло вам случайно, либо вы хотите отписаться, можете перейти по {}этой ссылке{/}." VerifyEmail: - Subject: 'Ссылка для верификации для подтверждения вашей почты SAYA.TODAY' - Welcome: 'Приветствую!' - Intro: 'Есть 2 способа, чтобы подтвердить свою электронную почту:' - GotoLink: 'Перейти по этой ссылке:' - InputCode: 'Либо ввести этот код на странице подписок:' - IfRandom: 'Если ты не понимаешь, что это за спам, можешь проигнорировать это письмо, а ещё, если интересно, можешь посетить мой сайт :)' + Subject: "Ссылка для верификации для подтверждения вашей почты SAYA.UZ" + Welcome: "Приветствую!" + Intro: "Есть 2 способа, чтобы подтвердить свою электронную почту:" + GotoLink: "Перейти по этой ссылке:" + InputCode: "Либо ввести этот код на странице подписок:" + IfRandom: "Если ты не понимаешь, что это за спам, можешь проигнорировать это письмо, а ещё, если интересно, можешь посетить мой сайт :)" NewPost: - Subject: 'Новый пост на SAYA.TODAY!' - Intro: 'Вышел новый пост!' - CapturedOn: 'Снималось' + Subject: "Новый пост на SAYA.UZ!" + Intro: "Вышел новый пост!" + CapturedOn: "Снималось" UserProfile: - Header: 'Личные настройки' - Description: 'Здесь можно настроить и верифицировать свою электронную почту, а также подписаться на избранные темы блога' - EmailHeader: 'E-Mail' - VerificationCodeHeader: 'Код верификации' - TypeEmail: 'Пожалуйста, введите свою почту' - SendCodeButton: 'Отправить код' - VerifyButton: 'Верифицировать' - VerificationCodeSent: 'Выслали вам код верификации! Проверьте свою почту. Следующая попытка верификации будет возможна {}.' - DelayTilVerification: 'Вы уже запрашивали недавно верификацию! Дождитесь {} для новой попытки.' - FailedEmailRender: 'Неудачная попытка создать электронное письмо, более подробно спрашивайте у администратора.' - VerificationCodeSendingError: 'Неудачная попытка прислать код для верификации, более подробно спрашивайте у администратора.' - EmailAlreadyValidated: 'Эту почту вы уже подтверждали.' - EmailTaken: 'Эта почта уже занята.' - EmailEmpty: 'Почта не введена.' - VerificationSuccess: 'Поздравляем! Теперь по этой почте можно подписаться на блог.' - VerificationFailed: 'Код для верификации невалиден, при вопросах, пожалуйста, обращайтесь к администратору.' - VerificationEmpty: 'Код для верификации не введён.' - SubscriptionHeader: 'Подписаться на...' - TagsNone: 'Ничего' - TagsAll: 'Всё' - TagsSpecific: 'Определённое' + Header: "Личные настройки" + Description: "Здесь можно настроить и верифицировать свою электронную почту, а также подписаться на избранные темы блога" + EmailHeader: "E-Mail" + VerificationCodeHeader: "Код верификации" + TypeEmail: "Пожалуйста, введите свою почту" + SendCodeButton: "Отправить код" + VerifyButton: "Верифицировать" + VerificationCodeSent: "Выслали вам код верификации! Проверьте свою почту. Следующая попытка верификации будет возможна {}." + DelayTilVerification: "Вы уже запрашивали недавно верификацию! Дождитесь {} для новой попытки." + FailedEmailRender: "Неудачная попытка создать электронное письмо, более подробно спрашивайте у администратора." + VerificationCodeSendingError: "Неудачная попытка прислать код для верификации, более подробно спрашивайте у администратора." + EmailAlreadyValidated: "Эту почту вы уже подтверждали." + EmailTaken: "Эта почта уже занята." + EmailEmpty: "Почта не введена." + VerificationSuccess: "Поздравляем! Теперь по этой почте можно подписаться на блог." + VerificationFailed: "Код для верификации невалиден, при вопросах, пожалуйста, обращайтесь к администратору." + VerificationEmpty: "Код для верификации не введён." + SubscriptionHeader: "Подписаться на..." + TagsNone: "Ничего" + TagsAll: "Всё" + TagsSpecific: "Определённое" TagDoesNotExist: 'Тэга "{}" нет на сайте.' TagAlreadyAdded: 'Тэг "{}" уже у вас добавлен.' - SaveButton: 'Сохранить' - SubscribeInvalidType: 'Неизвестный тип подписки.' - FailedToSubscribe: 'Неудачная попытка записать новую подписку, более подробно спрашивайте у администратора.' - SubscribedSuccessfully: 'Вы успешно подписались по новым настройкам!' - RefreshPage: 'Пожалуйста, обновите страницу с профилем на устройстве, откуда запрашивали код.' + SaveButton: "Сохранить" + SubscribeInvalidType: "Неизвестный тип подписки." + FailedToSubscribe: "Неудачная попытка записать новую подписку, более подробно спрашивайте у администратора." + SubscribedSuccessfully: "Вы успешно подписались по новым настройкам!" + RefreshPage: "Пожалуйста, обновите страницу с профилем на устройстве, откуда запрашивали код." diff --git a/views/layouts/general-mail.html b/views/layouts/general-mail.html index 00bd964..452982a 100644 --- a/views/layouts/general-mail.html +++ b/views/layouts/general-mail.html @@ -1,99 +1,119 @@ - + - + - + -
+
{{ block "body" . }}{{ end }}
diff --git a/views/pages/global-map.html b/views/pages/global-map.html index 2459ca1..aa6ddfd 100644 --- a/views/pages/global-map.html +++ b/views/pages/global-map.html @@ -1,306 +1,412 @@ - + - - - - - - - - - {{ .L.GlobalMap.Header }} // SAYA TODAY - - - - - {{ block "header" . }}{{ end }} - - - - - - - - - - - - -