From e8aef7aa28f979c226d99a6f10cb20f529608099 Mon Sep 17 00:00:00 2001 From: treamz Date: Sat, 21 Mar 2026 23:53:37 +0300 Subject: [PATCH] Dynamic content: landing and dashboard load texts from DB via API - Landing hero texts (headline, description, badge) from settings table - Landing categories from /api/tools (dynamic from DB) - Landing advantages from /api/content/advantages - Dashboard about block from /api/content/dashboard - Static HTML remains as fallback if API fails - All editable via AdminJS admin panel --- .adminjs/bundle.js | 7 +++++ .adminjs/entry.js | 1 + public/index.html | 11 ++++++++ public/landing.html | 64 ++++++++++++++++++++++++++++++++++++++++++--- 4 files changed, 80 insertions(+), 3 deletions(-) create mode 100644 .adminjs/bundle.js create mode 100644 .adminjs/entry.js diff --git a/.adminjs/bundle.js b/.adminjs/bundle.js new file mode 100644 index 0000000..014b9c3 --- /dev/null +++ b/.adminjs/bundle.js @@ -0,0 +1,7 @@ +(function () { + 'use strict'; + + AdminJS.UserComponents = {}; + +})(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlLmpzIiwic291cmNlcyI6WyJlbnRyeS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJBZG1pbkpTLlVzZXJDb21wb25lbnRzID0ge31cbiJdLCJuYW1lcyI6WyJBZG1pbkpTIiwiVXNlckNvbXBvbmVudHMiXSwibWFwcGluZ3MiOiI7OztDQUFBQSxPQUFPLENBQUNDLGNBQWMsR0FBRyxFQUFFOzs7Ozs7In0= diff --git a/.adminjs/entry.js b/.adminjs/entry.js new file mode 100644 index 0000000..c9edeb9 --- /dev/null +++ b/.adminjs/entry.js @@ -0,0 +1 @@ +AdminJS.UserComponents = {} diff --git a/public/index.html b/public/index.html index 5c56a07..26b501d 100644 --- a/public/index.html +++ b/public/index.html @@ -237,6 +237,17 @@ fetch('/auth/me').then(r => r.ok ? r.json() : null).then(user => { const hu = document.getElementById('headerUser'); if (hu) hu.textContent = name; }).catch(() => {}); + +// Load about section from DB +fetch('/api/content/dashboard').then(r => r.ok ? r.json() : []).then(blocks => { + const about = blocks.find(b => b.block_key === 'about'); + if (about) { + const h = document.querySelector('.about-card h2'); + const p = document.querySelector('.about-card p'); + if (h) h.textContent = about.title; + if (p) p.innerHTML = 'WA Dev Tools — ' + about.body; + } +}).catch(() => {}); diff --git a/public/landing.html b/public/landing.html index 8e0bb30..f1261cb 100644 --- a/public/landing.html +++ b/public/landing.html @@ -612,19 +612,19 @@
- 13 инструментов — бесплатно навсегда + 13 инструментов — бесплатно навсегда
-

+

Инструменты для
веб-разработчика

-

+

Сжатие картинок, форматирование кода, HTTP-клиент и ещё 10 инструментов — всё в браузере, бесплатно и без регистрации карты.

@@ -901,3 +901,61 @@ + +