-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
184 lines (175 loc) · 8.13 KB
/
index.html
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
<!DOCTYPE html>
<html lang="fa">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>رویدادهای پیشنهادی ریک سانچز</title>
<link href="https://cdn.jsdelivr.net/gh/rastikerdar/vazir-font@latest/dist/font-face.css" rel="stylesheet" type="text/css" />
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" /> <!-- Font Awesome -->
<style>
body {
font-family: 'Vazir', sans-serif;
background-color: #f8f9fa;
text-align: right; /* راست چین */
margin-bottom: 100px; /* فضای برای فوتر */
}
.container {
margin-top: 50px;
}
.webinar-card {
border: none;
border-radius: 10px;
overflow: hidden;
margin-bottom: 30px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}
.webinar-card img {
width: 100%;
height: 200px;
object-fit: cover;
}
.card-body {
padding: 15px;
}
.card-title {
font-size: 1.5rem;
font-weight: bold;
}
.card-text {
font-size: 1rem;
color: #555;
}
.btn {
margin-top: 10px;
width: 100%; /* دکمه به اندازه کامل کارت */
}
/* هدر */
.header {
position: fixed;
top: 0;
width: 100%;
background-color: #fff;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
z-index: 1000;
transition: top 0.3s;
}
.header h1 {
margin: 0;
padding: 10px; /* اندازه کوچکتر برای هدر */
text-align: center;
font-size: 1.5rem; /* اندازه کوچکتر */
}
/* فوتر */
.footer {
position: fixed;
bottom: 0;
width: 100%;
background-color: #fff;
text-align: center;
padding: 10px 0;
box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.2);
}
.social-icons a {
margin: 0 5px;
color: #555;
}
</style>
</head>
<body>
<div class="header" id="header">
<h1>وبینارهای پیشنهادی <a href="https://ricksanchez.ir" style="color: inherit;">ریک سانچز</a></h1>
</div>
<div class="container">
<div id="webinarList" class="row"></div>
</div>
<div class="footer">
<p>برنامه نویسی شده به صورت متن باز توسط <a href="https://ricksanchez.ir" target="_blank">ریک سانچز 🤍</a> | قدرت گرفته از <a href="https://eseminar.tv" target="_blank">ایسمینار</a> | از <a href="https://github.com/rastikerdar/vazir-font" target="_blank">فونت وزیرمتن</a> استفاده شده به یاد صابر راستی کردار.</p>
<div class="social-icons mb-2">
<!-- GitHub Star Button -->
<a class="github-button" href="https://github.com/m4tinbeigi-official/event" data-icon="octicon-star" data-show-count="true" aria-label="Star m4tinbeigi-official/event on GitHub">Star</a>
<script async defer src="https://buttons.github.io/buttons.js"></script>
<a href="https://github.com/m4tinbeigi-official" role="button"><i class="fab fa-github"></i></a>
<a href="https://twitter.com/m4tinbeigi" role="button"><i class="fab fa-twitter"></i></a>
<a href="https://linkedin.com/in/matinbeigi" role="button"><i class="fab fa-linkedin"></i></a>
<a href="https://instagram.com/m4tinbeigi" role="button"><i class="fab fa-instagram"></i></a>
</div>
</div>
<script>
// بارگذاری دادهها از فایل JSON
fetch('webinars.json')
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok ' + response.statusText);
}
return response.json();
})
.then(data => {
const webinars = data.webinars;
const webinarDetails = []; // آرایهای برای ذخیره اطلاعات وبینارها
// برای هر اسلاگ، تاریخ شروع و اطلاعات دیگر را بارگذاری کنیم
const fetchPromises = webinars.map(slug => {
return fetch(`https://api.eseminar.tv/api/v1/webinar/${slug}`)
.then(response => response.json())
.then(data => {
if (data.status === "success") {
const webinar = data.data.webinar;
const startAt = new Date(webinar.start_at);
// فقط وبینارهایی که تاریخ آنها آینده است را اضافه کنیم
if (startAt > new Date()) {
webinarDetails.push({
slug: slug,
title: webinar.title,
description: webinar.description,
startAt: startAt,
cover: webinar.cover
});
}
}
});
});
// منتظر ماندن تا همه درخواستها به اتمام برسند
Promise.all(fetchPromises).then(() => {
// مرتبسازی وبینارها بر اساس تاریخ شروع
webinarDetails.sort((a, b) => a.startAt - b.startAt);
// نمایش وبینارها
const listContainer = document.getElementById('webinarList');
webinarDetails.forEach(item => {
const card = document.createElement('div');
card.className = 'col-md-4 col-sm-6'; // ریسپانسیو
card.innerHTML = `
<div class="webinar-card card">
<img src="${item.cover}" alt="${item.title}">
<div class="card-body">
<h5 class="card-title">${item.title}</h5>
<p class="card-text">${item.description}</p>
<p><strong>تاریخ شروع:</strong> ${item.startAt.toLocaleString('fa-IR')}</p>
<a class="btn btn-primary" href="https://eseminar.tv/webinar/${item.slug}" target="_blank">ثبت نام در وبینار</a>
</div>
</div>
`;
listContainer.appendChild(card);
});
});
})
.catch(error => {
console.error('Error fetching webinars:', error);
alert('خطا در بارگذاری وبینارها.');
});
// تابع برای پنهان کردن و نمایان کردن هدر
let lastScrollTop = 0;
const header = document.getElementById("header");
window.addEventListener("scroll", function() {
const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
if (scrollTop > lastScrollTop) {
// Scroll Down
header.style.top = "-80px"; // ارتفاع هدر را باید به مقدار منفی بدهید
} else {
// Scroll Up
header.style.top = "0";
}
lastScrollTop = scrollTop;
});
</script>
</body>
</html>