Repository navigation
Expand file tree
/
Copy pathfaq.js
More file actions
134 lines (125 loc) · 5.19 KB
/
Copy pathfaq.js
File metadata and controls
134 lines (125 loc) · 5.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/**
* FAQ accordion — self-contained toggle (no broken Bootstrap header-title styles).
*/
(function () {
'use strict';
var el = document.getElementById('faq');
if (!el) return;
var items = [
{
q: 'فینگرکدر چیست؟',
a: 'فینگرکدر یک جامعه مخصوص برنامهنویسان و فعالان حوزه فناوری اطلاعات است که با هدف ارتقای دانش و تبادل تجربیات تشکیل شده است.'
},
{
q: 'آیا شرکت در نشستهای فینگرکدر رایگان است؟',
a: 'خیر؛ برای ارزشآفرینی نشستها و کیفیت برگزاری، شرکت در نشستهای فینگرکدر غیررایگان است.'
},
{
q: 'چه کسانی میتوانند در نشستهای فینگرکدر شرکت کنند؟',
a: 'هر کسی که علاقهمند به برنامهنویسی و فعالیت در حوزه فناوری اطلاعات است میتواند شرکت کند.'
},
{
q: 'آیا فقط زبانهای خاصی پوشش داده میشود؟',
a: 'خیر؛ در نشستهای فینگرکدر به زبانها و حوزههای مختلف برنامهنویسی پرداخته میشود.'
},
{
q: 'چگونه میتوانم بهعنوان سخنران شرکت کنم؟',
a: 'از طریق دکمه «درخواست ارائه در تلگرام» وارد کانال/گروه تلگرام فینگرکدر شوید و موضوع ارائه خود را برای تیم ارسال کنید.'
},
{
q: 'چگونه در نشست حضوری ثبتنام کنم؟',
a: 'از بخش نشستها در سایت یا شبکههای اجتماعی فینگرکدر، تاریخ و محل را ببینید و با دکمه ثبتنام اقدام کنید.'
},
{
q: 'آیا فرصت شبکهسازی وجود دارد؟',
a: 'بله؛ بخش مهمی از برنامه فینگرکدر به شبکهسازی و بحث آزاد اختصاص دارد.'
},
{
q: 'چگونه از فینگرکدر حمایت کنم؟',
a: 'با معرفی به دوستان، حضور در نشستها، ارائه، عضویت در تیم اجرایی یا حمایت مالی از طریق بخش «حامی شو».'
}
];
function esc(s) {
if (window.FingerCoder && FingerCoder.escapeHtml) return FingerCoder.escapeHtml(s);
return String(s)
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"');
}
function renderItem(item, index) {
var id = 'faq-panel-' + index;
return (
'<div class="faq-item" itemscope itemprop="mainEntity" itemtype="https://schema.org/Question">' +
'<h3 class="faq-question-wrap">' +
'<button type="button" class="faq-question" id="faq-btn-' +
index +
'" aria-expanded="false" aria-controls="' +
id +
'">' +
'<span class="faq-q-icon" aria-hidden="true">؟</span>' +
'<span class="faq-q-text" itemprop="name">' +
esc(item.q) +
'</span>' +
'<span class="faq-chevron" aria-hidden="true"></span>' +
'</button>' +
'</h3>' +
'<div class="faq-answer" id="' +
id +
'" role="region" aria-labelledby="faq-btn-' +
index +
'" hidden itemscope itemprop="acceptedAnswer" itemtype="https://schema.org/Answer">' +
'<div class="faq-answer-inner" itemprop="text">' +
esc(item.a) +
'</div>' +
'</div>' +
'</div>'
);
}
el.innerHTML =
'<div class="container">' +
'<div class="row">' +
'<div class="col-12">' +
'<div class="section-title-header text-center">' +
'<h1 class="section-title">سوالات متداول</h1>' +
'<p>پاسخ به سوالات رایج درباره جامعه فینگرکدر</p>' +
'</div>' +
'</div>' +
'</div>' +
'<div class="faq-list" itemscope itemtype="https://schema.org/FAQPage">' +
items
.map(function (item, i) {
return renderItem(item, i);
})
.join('') +
'</div>' +
'</div>';
// Accordion behavior: one open at a time (optional multi-open via shift not needed)
el.addEventListener('click', function (e) {
var btn = e.target.closest('.faq-question');
if (!btn || !el.contains(btn)) return;
var item = btn.closest('.faq-item');
var panel = item.querySelector('.faq-answer');
var isOpen = btn.getAttribute('aria-expanded') === 'true';
// close others
el.querySelectorAll('.faq-item').forEach(function (other) {
if (other === item) return;
var ob = other.querySelector('.faq-question');
var op = other.querySelector('.faq-answer');
if (ob) ob.setAttribute('aria-expanded', 'false');
if (op) {
op.hidden = true;
other.classList.remove('is-open');
}
});
if (isOpen) {
btn.setAttribute('aria-expanded', 'false');
panel.hidden = true;
item.classList.remove('is-open');
} else {
btn.setAttribute('aria-expanded', 'true');
panel.hidden = false;
item.classList.add('is-open');
}
});
})();