feat(xp): physics8 + chem9 + phys9 синхронизируют XP с системной геймификацией
- js/textbook-xp-widget.js: shared модуль (monkey-patch addXp + para-pill auto-award для учебников без addXp) - physics8_thermal/electro/optics: добавлены теги /js/xp.js и /js/textbook-xp-widget.js — теперь все 74 addXp-хука пробрасываются в глобальный gamification (через self-award endpoint с дебаунсом) - chemistry_9 + physics_9: те же теги. Каждый первый клик по .para-pill даёт +5 XP в систему (без правок 23000 LOC) - Изначальный XP в учебниках не теряется — localStorage остаётся кешем, сервер — источник правды
This commit is contained in:
@@ -8,6 +8,8 @@
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js"></script>
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/contrib/auto-render.min.js"
|
||||
onload="renderMathInElement(document.body,{delimiters:[{left:'$',right:'$',display:false},{left:'\\[',right:'\\]',display:true}],throwOnError:false})"></script>
|
||||
<script src="/js/xp.js" defer></script>
|
||||
<script src="/js/textbook-xp-widget.js" defer></script>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet">
|
||||
<style>
|
||||
:root{
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700;800;900&display=swap" rel="stylesheet">
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js"></script>
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/contrib/auto-render.min.js"></script>
|
||||
<script src="/js/xp.js" defer></script>
|
||||
<script src="/js/textbook-xp-widget.js" defer></script>
|
||||
<style>
|
||||
/* ═══════════ ДИЗАЙН-ТОКЕНЫ v2 ═══════════ */
|
||||
:root{
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700;800;900&display=swap" rel="stylesheet">
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js"></script>
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/contrib/auto-render.min.js"></script>
|
||||
<script src="/js/xp.js" defer></script>
|
||||
<script src="/js/textbook-xp-widget.js" defer></script>
|
||||
<style>
|
||||
/* ═══════════ ДИЗАЙН-ТОКЕНЫ v2 ═══════════ */
|
||||
:root{
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700;800;900&display=swap" rel="stylesheet">
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js"></script>
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/contrib/auto-render.min.js"></script>
|
||||
<script src="/js/xp.js" defer></script>
|
||||
<script src="/js/textbook-xp-widget.js" defer></script>
|
||||
<style>
|
||||
/* ═══════════ ДИЗАЙН-ТОКЕНЫ v2 ═══════════ */
|
||||
:root{
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js"></script>
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/contrib/auto-render.min.js"
|
||||
onload="renderMathInElement(document.body,{delimiters:[{left:'$',right:'$',display:false},{left:'\\[',right:'\\]',display:true}],throwOnError:false})"></script>
|
||||
<script src="/js/xp.js" defer></script>
|
||||
<script src="/js/textbook-xp-widget.js" defer></script>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700;800;900&family=Literata:opsz,wght@7..72,400;7..72,500;7..72,600;7..72,700;7..72,800&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
|
||||
<style>
|
||||
|
||||
Reference in New Issue
Block a user