feat: update Docker configuration and add deployment documentation for Coolify
This commit is contained in:
@@ -59,7 +59,7 @@
|
||||
<svg viewbox="0 0 24 24" fill="none"><path d="M12 21s-7-4.3-7-9.5A4 4 0 0 1 12 8a4 4 0 0 1 7 3.5C19 16.7 12 21 12 21Z" stroke="currentColor" stroke-width="1.9" stroke-linejoin="round"/></svg>
|
||||
</span>
|
||||
<div>
|
||||
<b class="mono">۹۵٪</b>
|
||||
<b style="font-variant-numeric:tabular-nums">۹۵٪</b>
|
||||
<span>رضایت بیماران</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -68,7 +68,7 @@
|
||||
<svg viewbox="0 0 24 24" fill="none"><path d="M8 7V5m8 2V5M4 9h16M5 7h14v12a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V7Z" stroke="currentColor" stroke-width="1.9"/></svg>
|
||||
</span>
|
||||
<div>
|
||||
<b class="mono">۳۸</b>
|
||||
<b style="font-variant-numeric:tabular-nums">۳۸</b>
|
||||
<span>نوبت امروز</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -553,10 +553,12 @@ var btn2 = document.getElementById('openRegModal2');
|
||||
if (btn1)
|
||||
btn1.addEventListener('click', openRegModal);
|
||||
|
||||
|
||||
if (btn2)
|
||||
btn2.addEventListener('click', openRegModal);
|
||||
|
||||
|
||||
|
||||
document.querySelectorAll('.reg-card').forEach(function (card) {
|
||||
card.addEventListener('click', function () {
|
||||
document.querySelectorAll('.reg-card').forEach(function (c) {
|
||||
@@ -567,6 +569,7 @@ var radio = card.querySelector('input[type=radio]');
|
||||
if (radio)
|
||||
radio.checked = true;
|
||||
|
||||
|
||||
selectedType = card.dataset.type;
|
||||
submitBtn.disabled = false;
|
||||
submitBtn.style.opacity = '1';
|
||||
@@ -582,6 +585,7 @@ var msg = document.getElementById('regMsg');
|
||||
if (! selectedType)
|
||||
return;
|
||||
|
||||
|
||||
if (! name) {
|
||||
showMsg('نام را وارد کنید', 'error');
|
||||
return;
|
||||
@@ -613,7 +617,9 @@ return r.json();
|
||||
if (data.success) {
|
||||
showMsg('درخواست شما ثبت شد. پس از بررسی، اطلاعات ورود از طریق SMS ارسال میشود.', 'success');
|
||||
submitBtn.textContent = 'ارسال شد ✓';
|
||||
setTimeout(function() { closeRegModal(); }, 2200);
|
||||
setTimeout(function () {
|
||||
closeRegModal();
|
||||
}, 2200);
|
||||
} else {
|
||||
var errMsg = (data.errors && data.errors[0]) ? data.errors[0].message : 'خطایی رخ داد';
|
||||
showMsg(errMsg, 'error');
|
||||
@@ -663,6 +669,8 @@ msg.style.border = type === 'success' ? '1px solid #bbf7d0' : '1px solid #fecaca
|
||||
<svg viewbox="0 0 24 24" fill="none"><path d="M4 20l1.4-4A8 8 0 1 1 9 18.6L4 20Z" stroke="currentColor" stroke-width="1.7" stroke-linejoin="round"/></svg>
|
||||
</a>
|
||||
</div>
|
||||
<!-- نماد اعتماد الکترونیکی — بعد از لود کامل صفحه تزریق میشود (footer JS) -->
|
||||
<div id="enamad-seal" style="margin-top:18px"></div>
|
||||
</div>
|
||||
|
||||
<div class="footer-col">
|
||||
@@ -684,7 +692,7 @@ msg.style.border = type === 'success' ? '1px solid #bbf7d0' : '1px solid #fecaca
|
||||
</div>
|
||||
<div class="fl">
|
||||
<svg viewbox="0 0 24 24" fill="none"><path d="M4 6.5C4 5 5 4 6.5 4h2c.6 0 1.1.4 1.3 1l1 3c.2.6 0 1.2-.5 1.6L9 11c1 2 2.5 3.5 4.5 4.5l1.4-1.3c.4-.4 1-.6 1.6-.4l3 1c.6.2 1 .7 1 1.3v2c0 1.5-1 2.5-2.5 2.4C10.5 20 4 13.5 4 6.5Z" stroke="currentColor" stroke-width="1.7" stroke-linejoin="round"/></svg>
|
||||
<a href="tel:07491012178" class="mono" dir="ltr">۰۷۴۹۱۰۱۲۱۷۸</a>
|
||||
<a href="tel:07491012178" style="font-variant-numeric:tabular-nums" dir="ltr">۰۷۴۹۱۰۱۲۱۷۸</a>
|
||||
</div>
|
||||
<div class="fl">
|
||||
<svg viewbox="0 0 24 24" fill="none"><rect x="3" y="5" width="18" height="14" rx="2" stroke="currentColor" stroke-width="1.7"/><path d="m4 7 8 5 8-5" stroke="currentColor" stroke-width="1.7" stroke-linejoin="round"/></svg>
|
||||
@@ -764,6 +772,7 @@ navLinks.style.boxShadow = '0 16px 30px oklch(0.4 0.08 285 / 0.1)';
|
||||
});
|
||||
|
||||
|
||||
|
||||
var sections = [
|
||||
'hero',
|
||||
'features',
|
||||
@@ -780,6 +789,7 @@ var el = document.getElementById(id);
|
||||
if (el && el.offsetTop <= y)
|
||||
cur = id;
|
||||
|
||||
|
||||
});
|
||||
links.forEach(function (a) {
|
||||
a.classList.toggle('active', a.getAttribute('href') === '#' + cur);
|
||||
@@ -805,6 +815,7 @@ reveals.forEach(function (el) {
|
||||
if (inView(el))
|
||||
reveal(el);
|
||||
|
||||
|
||||
});
|
||||
if ('IntersectionObserver' in window) {
|
||||
var io = new IntersectionObserver(function (es) {
|
||||
@@ -822,6 +833,7 @@ reveals.forEach(function (el) {
|
||||
if (! el.classList.contains('in'))
|
||||
io.observe(el);
|
||||
|
||||
|
||||
});
|
||||
}
|
||||
var ticking = false;
|
||||
@@ -829,12 +841,14 @@ function sweep() {
|
||||
if (ticking)
|
||||
return;
|
||||
|
||||
|
||||
ticking = true;
|
||||
requestAnimationFrame(function () {
|
||||
reveals.forEach(function (el) {
|
||||
if (inView(el))
|
||||
reveal(el);
|
||||
|
||||
|
||||
});
|
||||
ticking = false;
|
||||
});
|
||||
@@ -845,6 +859,33 @@ setTimeout(function () {
|
||||
reveals.forEach(reveal);
|
||||
}, 2800);
|
||||
}
|
||||
|
||||
// نماد اعتماد الکترونیکی (Enamad) — فقط بعد از لود کامل صفحه تزریق میشود تا
|
||||
// درخواست تصویرِ دامنهی بیرونی با منابع خود سایت رقابت نکند و سرعت لود پایین نیاید.
|
||||
function mountEnamad() {
|
||||
var slot = document.getElementById('enamad-seal');
|
||||
if (! slot)
|
||||
return;
|
||||
|
||||
var a = document.createElement('a');
|
||||
a.setAttribute('referrerpolicy', 'origin');
|
||||
a.target = '_blank';
|
||||
a.href = 'https://trustseal.enamad.ir/?id=648891&Code=tudyxbILEtrmS2VZHeGr1LfmkrEerqeF';
|
||||
var img = document.createElement('img');
|
||||
img.setAttribute('referrerpolicy', 'origin');
|
||||
img.src = 'https://trustseal.enamad.ir/logo.aspx?id=648891&Code=tudyxbILEtrmS2VZHeGr1LfmkrEerqeF';
|
||||
img.alt = 'نماد اعتماد الکترونیکی';
|
||||
img.style.cursor = 'pointer';
|
||||
img.setAttribute('code', 'tudyxbILEtrmS2VZHeGr1LfmkrEerqeF');
|
||||
img.loading = 'lazy';
|
||||
a.appendChild(img);
|
||||
slot.appendChild(a);
|
||||
}
|
||||
if (document.readyState === 'complete') {
|
||||
mountEnamad();
|
||||
} else {
|
||||
window.addEventListener('load', mountEnamad);
|
||||
}
|
||||
})();
|
||||
</script>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user