nodebb-plugin-sso-biogrenci 2.0.8 → 2.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/custom-css.txt CHANGED
@@ -1,602 +1,2 @@
1
- /* ================================================
2
- bi'öğrenci Premium Fırsatlar Custom CSS
3
- NodeBB Admin > Appearance > Custom CSS/LESS
4
- ================================================ */
5
-
6
- :root {
7
- --bio-primary: #2563eb;
8
- --bio-primary-dark: #1d4ed8;
9
- --bio-primary-light: #eff6ff;
10
- --bio-accent: #f43f5e;
11
- --bio-bg: #f8fafc;
12
- --bio-card-bg: rgba(255, 255, 255, 0.85);
13
- --bio-text-main: #0f172a;
14
- --bio-text-mut: #64748b;
15
- --bio-border: rgba(226, 232, 240, 0.8);
16
- --bio-border-glass: rgba(255, 255, 255, 0.5);
17
- --bio-shadow-sm: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -2px rgba(0, 0, 0, 0.05);
18
- --bio-shadow-md: 0 10px 15px -3px rgba(0, 0, 0, 0.05), 0 4px 6px -4px rgba(0, 0, 0, 0.05);
19
- --bio-shadow-lg: 0 20px 25px -5px rgba(0, 0, 0, 0.05), 0 8px 10px -6px rgba(0, 0, 0, 0.05);
20
- --bio-shadow-glow: 0 0 20px rgba(37, 99, 235, 0.15);
21
- --bio-radius: 20px;
22
- --bio-radius-sm: 12px;
23
- }
24
-
25
- /* ---------- Page Container ---------- */
26
- #biogrenci-firsatlar {
27
- max-width: 1280px;
28
- margin: 0 auto;
29
- padding: 0 20px 80px;
30
- font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
31
- color: var(--bio-text-main);
32
- position: relative;
33
- }
34
-
35
- /* ---------- Aurora Animated Background ---------- */
36
- .bio-aurora {
37
- position: absolute;
38
- top: 0;
39
- left: 0;
40
- width: 100%;
41
- height: 600px;
42
- overflow: hidden;
43
- z-index: -1;
44
- pointer-events: none;
45
- opacity: 0.6;
46
- }
47
- .bio-aurora-orb {
48
- position: absolute;
49
- border-radius: 50%;
50
- filter: blur(80px);
51
- animation: aurora-float 20s infinite alternate ease-in-out;
52
- }
53
- .bio-orb-1 {
54
- width: 400px;
55
- height: 400px;
56
- background: rgba(59, 130, 246, 0.3);
57
- top: -100px;
58
- left: -100px;
59
- }
60
- .bio-orb-2 {
61
- width: 500px;
62
- height: 500px;
63
- background: rgba(236, 72, 153, 0.2);
64
- top: 100px;
65
- right: -200px;
66
- animation-delay: -5s;
67
- }
68
- .bio-orb-3 {
69
- width: 300px;
70
- height: 300px;
71
- background: rgba(139, 92, 246, 0.25);
72
- bottom: -50px;
73
- left: 30%;
74
- animation-delay: -10s;
75
- }
76
-
77
- @keyframes aurora-float {
78
- 0% { transform: translate(0, 0) scale(1); }
79
- 50% { transform: translate(50px, 30px) scale(1.1); }
80
- 100% { transform: translate(-30px, -50px) scale(0.9); }
81
- }
82
-
83
- /* ---------- Hero Section ---------- */
84
- .bio-hero {
85
- padding: 80px 20px 60px;
86
- text-align: center;
87
- position: relative;
88
- z-index: 10;
89
- }
90
- .bio-badge-premium {
91
- display: inline-flex;
92
- align-items: center;
93
- gap: 8px;
94
- background: linear-gradient(135deg, rgba(255,255,255,0.9), rgba(255,255,255,0.7));
95
- backdrop-filter: blur(10px);
96
- -webkit-backdrop-filter: blur(10px);
97
- padding: 8px 20px;
98
- border-radius: 100px;
99
- font-size: 13px;
100
- font-weight: 800;
101
- color: var(--bio-primary-dark);
102
- margin-bottom: 24px;
103
- border: 1px solid var(--bio-border-glass);
104
- box-shadow: var(--bio-shadow-sm);
105
- text-transform: uppercase;
106
- letter-spacing: 1px;
107
- }
108
- .bio-badge-premium i { color: #f59e0b; }
109
- .bio-hero h1 {
110
- margin: 0 0 16px;
111
- font-size: 48px;
112
- font-weight: 900;
113
- letter-spacing: -1.5px;
114
- line-height: 1.1;
115
- background: linear-gradient(135deg, #0f172a 0%, #334155 100%);
116
- -webkit-background-clip: text;
117
- -webkit-text-fill-color: transparent;
118
- }
119
- .bio-hero p {
120
- margin: 0 auto;
121
- font-size: 18px;
122
- color: var(--bio-text-mut);
123
- max-width: 600px;
124
- line-height: 1.6;
125
- }
126
-
127
- /* ---------- Sticky Glass Controls ---------- */
128
- .bio-controls-wrapper {
129
- position: sticky;
130
- top: 70px; /* Adjust based on navbar height */
131
- z-index: 40;
132
- margin-bottom: 40px;
133
- padding: 10px 0;
134
- }
135
- .bio-controls {
136
- display: flex;
137
- align-items: center;
138
- gap: 16px;
139
- background: rgba(255, 255, 255, 0.75);
140
- backdrop-filter: blur(20px);
141
- -webkit-backdrop-filter: blur(20px);
142
- border: 1px solid var(--bio-border-glass);
143
- padding: 12px 16px;
144
- border-radius: var(--bio-radius);
145
- box-shadow: var(--bio-shadow-md);
146
- flex-wrap: wrap;
147
- }
148
-
149
- /* Search */
150
- .bio-search {
151
- flex: 1;
152
- min-width: 240px;
153
- position: relative;
154
- }
155
- .bio-search > i {
156
- position: absolute;
157
- left: 20px;
158
- top: 50%;
159
- transform: translateY(-50%);
160
- color: #94a3b8;
161
- font-size: 16px;
162
- z-index: 2;
163
- transition: color 0.3s ease;
164
- }
165
- .bio-search input {
166
- width: 100%;
167
- height: 52px;
168
- padding: 0 20px 0 52px;
169
- border: 2px solid transparent;
170
- background: rgba(255, 255, 255, 0.9);
171
- border-radius: var(--bio-radius-sm);
172
- font-size: 15px;
173
- font-weight: 500;
174
- color: var(--bio-text-main);
175
- outline: none;
176
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
177
- box-shadow: inset 0 2px 4px rgba(0,0,0,0.02);
178
- }
179
- .bio-search input::placeholder { color: #94a3b8; }
180
- .bio-search input:focus {
181
- background: #fff;
182
- border-color: var(--bio-primary);
183
- box-shadow: 0 0 0 4px rgba(37,99,235,0.1), inset 0 2px 4px rgba(0,0,0,0);
184
- }
185
- .bio-search input:focus + .bio-search-ring {
186
- opacity: 1;
187
- transform: scale(1);
188
- }
189
- .bio-search input:focus ~ i { color: var(--bio-primary); }
190
-
191
- /* Filters */
192
- .bio-filters {
193
- display: flex;
194
- gap: 10px;
195
- flex-wrap: nowrap;
196
- overflow-x: auto;
197
- -webkit-overflow-scrolling: touch;
198
- scrollbar-width: none;
199
- padding: 4px 0;
200
- }
201
- .bio-filters::-webkit-scrollbar { display: none; }
202
- .bio-chip {
203
- display: inline-flex;
204
- align-items: center;
205
- gap: 8px;
206
- padding: 12px 24px;
207
- border-radius: 100px;
208
- border: 1px solid var(--bio-border);
209
- background: #fff;
210
- color: var(--bio-text-mut);
211
- font-size: 14px;
212
- font-weight: 600;
213
- cursor: pointer;
214
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
215
- white-space: nowrap;
216
- box-shadow: var(--bio-shadow-sm);
217
- }
218
- .bio-chip i { font-size: 14px; }
219
- .bio-chip:hover {
220
- border-color: #cbd5e1;
221
- background: #f8fafc;
222
- transform: translateY(-2px);
223
- box-shadow: var(--bio-shadow-md);
224
- color: var(--bio-text-main);
225
- }
226
- .bio-chip.active {
227
- background: var(--bio-text-main);
228
- color: #fff;
229
- border-color: var(--bio-text-main);
230
- box-shadow: 0 8px 16px rgba(15, 23, 42, 0.2);
231
- }
232
-
233
- /* Sort */
234
- .bio-sort {
235
- position: relative;
236
- min-width: 160px;
237
- }
238
- .bio-sort-icon {
239
- position: absolute;
240
- left: 16px;
241
- top: 50%;
242
- transform: translateY(-50%);
243
- color: #94a3b8;
244
- pointer-events: none;
245
- z-index: 2;
246
- }
247
- .bio-sort select {
248
- width: 100%;
249
- height: 52px;
250
- padding: 0 40px 0 44px;
251
- border: 1px solid var(--bio-border);
252
- border-radius: var(--bio-radius-sm);
253
- background: #fff;
254
- color: var(--bio-text-main);
255
- font-size: 14px;
256
- font-weight: 600;
257
- cursor: pointer;
258
- outline: none;
259
- appearance: none;
260
- transition: all 0.3s ease;
261
- box-shadow: var(--bio-shadow-sm);
262
- }
263
- .bio-sort::after {
264
- content: '\f107'; /* FontAwesome chevron-down */
265
- font-family: 'FontAwesome';
266
- position: absolute;
267
- right: 16px;
268
- top: 50%;
269
- transform: translateY(-50%);
270
- color: #94a3b8;
271
- pointer-events: none;
272
- }
273
- .bio-sort select:focus {
274
- border-color: var(--bio-primary);
275
- box-shadow: 0 0 0 4px rgba(37,99,235,0.1);
276
- }
277
-
278
- /* ---------- Grid ---------- */
279
- .bio-grid {
280
- column-count: 3;
281
- column-gap: 32px;
282
- }
283
-
284
- /* ---------- Premium Card ---------- */
285
- a.bio-card {
286
- background: var(--bio-card-bg);
287
- backdrop-filter: blur(10px);
288
- -webkit-backdrop-filter: blur(10px);
289
- border-radius: var(--bio-radius);
290
- overflow: hidden;
291
- border: 1px solid var(--bio-border-glass);
292
- display: flex;
293
- flex-direction: column;
294
- transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
295
- text-decoration: none;
296
- color: inherit;
297
- cursor: pointer;
298
- break-inside: avoid;
299
- margin-bottom: 32px;
300
- box-shadow: 0 10px 30px -10px rgba(0,0,0,0.05), inset 0 1px 0 rgba(255,255,255,1);
301
- position: relative;
302
- animation: card-entrance 0.6s backwards;
303
- }
304
- @keyframes card-entrance {
305
- from { opacity: 0; transform: translateY(40px) scale(0.95); }
306
- to { opacity: 1; transform: translateY(0) scale(1); }
307
- }
308
-
309
- a.bio-card:hover {
310
- transform: translateY(-12px) scale(1.02);
311
- box-shadow: 0 30px 60px -15px rgba(0,0,0,0.1), inset 0 1px 0 rgba(255,255,255,1);
312
- text-decoration: none;
313
- }
314
- a.bio-card.featured {
315
- border: 2px solid rgba(245, 158, 11, 0.4);
316
- box-shadow: 0 20px 40px rgba(245, 158, 11, 0.1), inset 0 1px 0 rgba(255,255,255,1);
317
- }
318
-
319
- /* Card Image Area */
320
- .bio-card-img {
321
- position: relative;
322
- overflow: hidden;
323
- background: #f1f5f9;
324
- border-radius: var(--bio-radius) var(--bio-radius) 0 0;
325
- }
326
- .bio-card-img img {
327
- width: 100%;
328
- height: auto;
329
- display: block;
330
- transition: transform 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94);
331
- filter: saturate(1.1);
332
- }
333
- a.bio-card:hover .bio-card-img img {
334
- transform: scale(1.08);
335
- }
336
- .bio-card-img::after {
337
- content: '';
338
- position: absolute;
339
- top: 0; left: 0; right: 0; bottom: 0;
340
- background: linear-gradient(to bottom, transparent 60%, rgba(0,0,0,0.7) 100%);
341
- pointer-events: none;
342
- opacity: 0.8;
343
- transition: opacity 0.3s ease;
344
- }
345
- a.bio-card:hover .bio-card-img::after {
346
- opacity: 1;
347
- }
348
-
349
- /* Card Badges */
350
- .bio-tag {
351
- position: absolute;
352
- top: 16px;
353
- left: 16px;
354
- padding: 6px 16px;
355
- border-radius: 100px;
356
- font-size: 11px;
357
- font-weight: 800;
358
- text-transform: uppercase;
359
- letter-spacing: 1px;
360
- z-index: 2;
361
- display: inline-flex;
362
- align-items: center;
363
- gap: 6px;
364
- background: rgba(255,255,255,0.9);
365
- backdrop-filter: blur(8px);
366
- -webkit-backdrop-filter: blur(8px);
367
- box-shadow: 0 4px 12px rgba(0,0,0,0.1);
368
- border: 1px solid rgba(255,255,255,0.5);
369
- }
370
- .bio-tag-kupon { color: #10b981; }
371
- .bio-tag-qr { color: var(--bio-primary); }
372
- .bio-tag-affiliate { color: #f43f5e; }
373
-
374
- /* Favorite/Star */
375
- .bio-star {
376
- position: absolute;
377
- top: 16px;
378
- right: 16px;
379
- width: 36px;
380
- height: 36px;
381
- background: rgba(255,255,255,0.9);
382
- backdrop-filter: blur(8px);
383
- border-radius: 50%;
384
- display: flex;
385
- align-items: center;
386
- justify-content: center;
387
- box-shadow: 0 4px 12px rgba(0,0,0,0.1);
388
- z-index: 2;
389
- border: 1px solid rgba(255,255,255,0.5);
390
- }
391
- .bio-star i { color: #f59e0b; font-size: 16px; }
392
-
393
- /* Timer */
394
- .bio-timer {
395
- position: absolute;
396
- bottom: 0;
397
- left: 0;
398
- right: 0;
399
- padding: 16px 20px;
400
- color: #fff;
401
- font-size: 13px;
402
- font-weight: 600;
403
- z-index: 2;
404
- display: flex;
405
- align-items: center;
406
- gap: 8px;
407
- }
408
- .bio-timer i { color: #facc15; }
409
-
410
- /* Card Body */
411
- .bio-card-body {
412
- padding: 24px;
413
- display: flex;
414
- flex-direction: column;
415
- flex: 1;
416
- background: #fff;
417
- }
418
- .bio-brand {
419
- font-size: 12px;
420
- font-weight: 800;
421
- color: var(--bio-primary);
422
- text-transform: uppercase;
423
- letter-spacing: 1.5px;
424
- margin-bottom: 8px;
425
- display: block;
426
- }
427
- .bio-card-body h3 {
428
- font-size: 20px;
429
- font-weight: 800;
430
- color: var(--bio-text-main);
431
- margin: 0 0 10px;
432
- line-height: 1.3;
433
- display: -webkit-box;
434
- -webkit-line-clamp: 2;
435
- -webkit-box-orient: vertical;
436
- overflow: hidden;
437
- }
438
- .bio-card-body p {
439
- font-size: 14px;
440
- color: var(--bio-text-mut);
441
- margin: 0 0 24px;
442
- line-height: 1.6;
443
- display: -webkit-box;
444
- -webkit-line-clamp: 2;
445
- -webkit-box-orient: vertical;
446
- overflow: hidden;
447
- flex: 1;
448
- }
449
-
450
- /* CTA Button */
451
- .bio-cta {
452
- display: flex;
453
- align-items: center;
454
- justify-content: center;
455
- gap: 10px;
456
- width: 100%;
457
- padding: 16px 24px;
458
- border-radius: var(--bio-radius-sm);
459
- background: var(--bio-text-main);
460
- color: #fff;
461
- font-size: 15px;
462
- font-weight: 700;
463
- margin-top: auto;
464
- transition: all 0.3s ease;
465
- letter-spacing: 0.5px;
466
- }
467
- a.bio-card:hover .bio-cta {
468
- background: var(--bio-primary);
469
- box-shadow: var(--bio-shadow-glow);
470
- }
471
- .bio-cta i {
472
- transition: transform 0.3s ease;
473
- }
474
- a.bio-card:hover .bio-cta i {
475
- transform: translateX(6px);
476
- }
477
-
478
- /* ---------- Skeleton Loading (Shimmer) ---------- */
479
- .bio-skeleton-card {
480
- background: #fff;
481
- border-radius: var(--bio-radius);
482
- border: 1px solid var(--bio-border);
483
- overflow: hidden;
484
- break-inside: avoid;
485
- margin-bottom: 32px;
486
- display: flex;
487
- flex-direction: column;
488
- }
489
- .bio-shimmer {
490
- background: #e2e8f0;
491
- background-image: linear-gradient(
492
- 90deg,
493
- rgba(255, 255, 255, 0) 0,
494
- rgba(255, 255, 255, 0.4) 20%,
495
- rgba(255, 255, 255, 0.6) 60%,
496
- rgba(255, 255, 255, 0)
497
- );
498
- background-size: 200% 100%;
499
- animation: shimmer 1.5s infinite linear;
500
- }
501
- .bio-skel-img {
502
- height: 200px;
503
- width: 100%;
504
- }
505
- .bio-skel-body {
506
- padding: 24px;
507
- display: flex;
508
- flex-direction: column;
509
- gap: 16px;
510
- }
511
- .bio-skel-brand { height: 16px; width: 40%; border-radius: 4px; }
512
- .bio-skel-title { height: 24px; width: 90%; border-radius: 4px; }
513
- .bio-skel-desc { height: 14px; width: 100%; border-radius: 4px; }
514
- .bio-skel-btn { height: 48px; width: 100%; border-radius: var(--bio-radius-sm); margin-top: 16px; }
515
-
516
- @keyframes shimmer {
517
- 0% { background-position: -200% 0; }
518
- 100% { background-position: 200% 0; }
519
- }
520
-
521
- /* ---------- Empty State ---------- */
522
- .bio-state.bio-empty {
523
- grid-column: 1 / -1;
524
- text-align: center;
525
- padding: 100px 20px;
526
- background: rgba(255,255,255,0.5);
527
- backdrop-filter: blur(10px);
528
- border-radius: var(--bio-radius);
529
- border: 1px dashed var(--bio-border);
530
- }
531
- .bio-state.bio-empty i {
532
- font-size: 64px;
533
- color: #cbd5e1;
534
- margin-bottom: 24px;
535
- }
536
- .bio-state.bio-empty h3 {
537
- font-size: 24px;
538
- font-weight: 800;
539
- color: var(--bio-text-main);
540
- margin: 0 0 10px;
541
- }
542
- .bio-state.bio-empty p {
543
- color: var(--bio-text-mut);
544
- font-size: 16px;
545
- }
546
-
547
- /* ---------- Pagination (Premium Bubble) ---------- */
548
- .bio-pager {
549
- display: flex;
550
- justify-content: center;
551
- align-items: center;
552
- gap: 16px;
553
- margin-top: 50px;
554
- }
555
- .bio-pager-btn {
556
- width: 54px;
557
- height: 54px;
558
- border-radius: 50%;
559
- border: none;
560
- background: #fff;
561
- color: var(--bio-text-main);
562
- display: flex;
563
- align-items: center;
564
- justify-content: center;
565
- cursor: pointer;
566
- transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
567
- font-size: 16px;
568
- box-shadow: var(--bio-shadow-md);
569
- }
570
- .bio-pager-btn:hover:not(:disabled) {
571
- background: var(--bio-primary);
572
- color: #fff;
573
- transform: scale(1.1);
574
- box-shadow: var(--bio-shadow-glow);
575
- }
576
- .bio-pager-btn:disabled { opacity: 0.4; cursor: not-allowed; box-shadow: none; }
577
- .bio-page-bubble {
578
- background: #fff;
579
- padding: 14px 28px;
580
- border-radius: 100px;
581
- font-size: 15px;
582
- font-weight: 800;
583
- color: var(--bio-text-main);
584
- box-shadow: var(--bio-shadow-sm);
585
- }
586
-
587
- /* ---------- Responsive Adjustments ---------- */
588
- @media (max-width: 1024px) {
589
- .bio-grid { column-count: 2; column-gap: 24px; }
590
- }
591
-
592
- @media (max-width: 768px) {
593
- .bio-hero h1 { font-size: 36px; }
594
- .bio-hero { padding: 40px 20px 30px; }
595
- .bio-controls-wrapper { top: 50px; }
596
- .bio-controls { flex-direction: column; padding: 16px; gap: 16px; border-radius: 24px; }
597
- .bio-search, .bio-sort { width: 100%; min-width: 100%; }
598
- .bio-filters { width: 100%; padding-bottom: 8px; }
599
- .bio-grid { column-count: 1; }
600
- a.bio-card:hover { transform: translateY(-4px) scale(1.01); }
601
- .bio-aurora { height: 400px; }
602
- }
1
+ /* CSS artık plugin ile birlikte yükleniyor (style.less).
2
+ NodeBB Admin > Appearance > Custom CSS'den eski bi'öğrenci CSS'ini kaldırabilirsiniz. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodebb-plugin-sso-biogrenci",
3
- "version": "2.0.8",
3
+ "version": "2.0.10",
4
4
  "description": "bi'öğrenci öğrenci fırsatları sayfası for NodeBB",
5
5
  "main": "library.js",
6
6
  "keywords": [
package/plugin.json CHANGED
@@ -13,5 +13,6 @@
13
13
  { "hook": "static:app.load", "method": "init" },
14
14
  { "hook": "filter:admin.header.build", "method": "addAdminNavigation" }
15
15
  ],
16
- "templates": "static/templates"
16
+ "templates": "static/templates",
17
+ "less": ["static/style.less"]
17
18
  }
@@ -106,7 +106,7 @@ define('forum/biogrenci-firsatlar', [], function () {
106
106
  var icon = it.type === 'kupon' ? 'ticket' : it.type === 'qr' ? 'qrcode' : 'external-link';
107
107
  var left = days(it.end_date);
108
108
  var btn = it.button_text || 'Fırsata Git';
109
- var url = 'https://biogrenci.com/firsatlar/' + it.slug;
109
+ var url = 'https://biogrenci.com/firsat/' + it.slug;
110
110
 
111
111
  return '<a href="' + url + '" target="_blank" rel="noopener" class="bio-card' + (it.is_featured ? ' featured' : '') + '">' +
112
112
  '<div class="bio-card-img">' +