donation & roadmap page, automation
This commit is contained in:
parent
99641a8ebe
commit
562d2290bc
4 changed files with 221 additions and 19 deletions
|
@ -66,11 +66,12 @@ if (!$_SERVER['DOCUMENT_ROOT']) {
|
||||||
<div><span>IBAN: </span><span style="margin-top: 0px;text-decoration:none;"> <b class="copy_element" id="IBAN" onclick="copy2Clipboard('IBAN')">TR63 0082 9000 0949 1444 3182 51</b><span id="IBAN-tip"></span></span></div>
|
<div><span>IBAN: </span><span style="margin-top: 0px;text-decoration:none;"> <b class="copy_element" id="IBAN" onclick="copy2Clipboard('IBAN')">TR63 0082 9000 0949 1444 3182 51</b><span id="IBAN-tip"></span></span></div>
|
||||||
<div><span>Papara Numarası: </span><span style="margin-top: 0px;text-decoration:none;"> <b class="copy_element" id="Papara" onclick="copy2Clipboard('Papara')">14444318251</b><span id="Papara-tip"></span></span></div>
|
<div><span>Papara Numarası: </span><span style="margin-top: 0px;text-decoration:none;"> <b class="copy_element" id="Papara" onclick="copy2Clipboard('Papara')">14444318251</b><span id="Papara-tip"></span></span></div>
|
||||||
<div><sup>Açıklama Kısmını <span style="font-weight:800;">Gözükmesini İstediğiniz İsim - Bağış</span> şeklinde doldurunuz. Anonim Kalmak için <span style="font-weight:800;">Anonim - Bağış</span> Yazabilirsiniz</sup></div>
|
<div><sup>Açıklama Kısmını <span style="font-weight:800;">Gözükmesini İstediğiniz İsim - Bağış</span> şeklinde doldurunuz. Anonim Kalmak için <span style="font-weight:800;">Anonim - Bağış</span> Yazabilirsiniz</sup></div>
|
||||||
<p></p>
|
|
||||||
<hr style="width: 100%;"><br>
|
<hr style="width: 100%;"><br>
|
||||||
<h1 style="font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; font-weight: 800; ">Bağışçılar</h1>
|
<h1 style="font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; font-weight: 800; margin-top:1px; margin-bottom:1px;">Bağışçılar</h1>
|
||||||
<div id="current-goal"><label id="label1" for="pprogress">Sıradaki Hedef: </label><progress id="pprogress"><span></span></progress> <label id="label2" for="pprogress">x/y</label><br>
|
<div id="current-goal"><label id="label1" for="pprogress">Sıradaki Hedef: </label><progress id="pprogress"><span></span></progress> <label id="label2" for="pprogress">x/y</label><br>
|
||||||
<p id="next-todo" style="margin-top:0px;font-size:15px;">Sırada Yapılacaklar: Ders Programı Görüntüleme</p>
|
<p id="next-todo" style="margin-top:0px; margin-bottom:0px;font-size:15px;">Sırada Yapılacaklar: <b><span id="sirada-yapilacaklar"></span></b><br>
|
||||||
|
<sup>daha fazlası için <a href="../iflpanel/path.php">yol haritasına</a> bakabilirsiniz</sup>
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="bagiscilar" style="text-align: left;"></div>
|
<div id="bagiscilar" style="text-align: left;"></div>
|
||||||
|
|
||||||
|
@ -83,9 +84,10 @@ if (!$_SERVER['DOCUMENT_ROOT']) {
|
||||||
<ul style="text-align:left;">
|
<ul style="text-align:left;">
|
||||||
<li>SSA VPN</li>
|
<li>SSA VPN</li>
|
||||||
<li>Tahta Arkaplanı</li>
|
<li>Tahta Arkaplanı</li>
|
||||||
<li><del>İFL Kütüphane</del</li>
|
<li><del>İFL Kütüphane</del< /li>
|
||||||
<li><del>İFL Galeri</del></li>
|
<li><del>İFL Galeri</del></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
Sponsorluklar ve Bağışlar ile devam ettireceğim İFL/Eğitim Odaklı projelerime <a href="../iflpanel/path.php">buradan</a> ulaşabilirsiniz.<br>
|
||||||
Sponsor olabileceğiniz diğer projelerime <a href="https://github.com/asandikci">GitHub</a> veya <a href="https://git.aliberksandikci.com.tr">Forgejo</a> adresi üzerinden ulaşabilirsiniz.</p>
|
Sponsor olabileceğiniz diğer projelerime <a href="https://github.com/asandikci">GitHub</a> veya <a href="https://git.aliberksandikci.com.tr">Forgejo</a> adresi üzerinden ulaşabilirsiniz.</p>
|
||||||
</div>
|
</div>
|
||||||
<br>
|
<br>
|
||||||
|
@ -119,6 +121,15 @@ if (!$_SERVER['DOCUMENT_ROOT']) {
|
||||||
} ?>
|
} ?>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
function b64DecodeUnicode(str) {
|
||||||
|
// Going backwards: from bytestream, to percent-encoding, to original string.
|
||||||
|
return decodeURIComponent(atob(str).split('').map(function(c) {
|
||||||
|
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
|
||||||
|
}).join(''));
|
||||||
|
}
|
||||||
|
|
||||||
|
var curAmount = 0
|
||||||
|
var goalAmount = 0;
|
||||||
let localtest = 0;
|
let localtest = 0;
|
||||||
let url = 'https://git.aliberksandikci.com.tr/api/v1/repos/asandikci.com/www/contents/donations.json';
|
let url = 'https://git.aliberksandikci.com.tr/api/v1/repos/asandikci.com/www/contents/donations.json';
|
||||||
// let url = "http://127.0.0.1:PORT/donations.json";
|
// let url = "http://127.0.0.1:PORT/donations.json";
|
||||||
|
@ -128,22 +139,19 @@ if (!$_SERVER['DOCUMENT_ROOT']) {
|
||||||
.then(res => res.json())
|
.then(res => res.json())
|
||||||
.then(out => {
|
.then(out => {
|
||||||
var lastjson;
|
var lastjson;
|
||||||
console.log(out);
|
|
||||||
|
|
||||||
if (localtest) {
|
if (localtest) {
|
||||||
lastjson = out;
|
lastjson = out;
|
||||||
} else {
|
} else {
|
||||||
var cnt = out.content;
|
var cnt = out.content;
|
||||||
console.log("base64: " + cnt);
|
console.log("base64: " + cnt);
|
||||||
lastjson = JSON.parse(atob(cnt));
|
lastjson = JSON.parse(b64DecodeUnicode(cnt));
|
||||||
console.log(lastjson);
|
|
||||||
}
|
}
|
||||||
|
console.log(lastjson);
|
||||||
|
|
||||||
lastjson.sort(function(a, b) {
|
lastjson.sort(function(a, b) {
|
||||||
return a.amount < b.amount;
|
return a.amount < b.amount;
|
||||||
});
|
});
|
||||||
|
|
||||||
var curAmount = 0;
|
|
||||||
for (let i = 0; i < lastjson.length; i++) {
|
for (let i = 0; i < lastjson.length; i++) {
|
||||||
const s = lastjson[i];
|
const s = lastjson[i];
|
||||||
const curId = s.place + s.name;
|
const curId = s.place + s.name;
|
||||||
|
@ -193,19 +201,61 @@ if (!$_SERVER['DOCUMENT_ROOT']) {
|
||||||
document.getElementById(curId).style.color = "#ffff00";
|
document.getElementById(curId).style.color = "#ffff00";
|
||||||
document.getElementById(curId).style.fontSize = "34px";
|
document.getElementById(curId).style.fontSize = "34px";
|
||||||
document.getElementById(curId).style.fontWeight = "800";
|
document.getElementById(curId).style.fontWeight = "800";
|
||||||
} else if (s.amount <= 500) {
|
} else {
|
||||||
document.getElementById(curId).style.color = "#ffff00";
|
document.getElementById(curId).style.color = "#ffff00";
|
||||||
document.getElementById(curId).style.fontSize = "36px";
|
document.getElementById(curId).style.fontSize = "36px";
|
||||||
document.getElementById(curId).style.fontWeight = "900";
|
document.getElementById(curId).style.fontWeight = "900";
|
||||||
document.getElementById(curId).style.textDecoration = "underline";
|
document.getElementById(curId).style.textDecoration = "underline";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
let progbar = document.getElementById("pprogress")
|
||||||
let goalAmount = 100;
|
|
||||||
let progbar = document.getElementById("pprogress");
|
|
||||||
progbar.max = goalAmount;
|
progbar.max = goalAmount;
|
||||||
progbar.value = curAmount;
|
progbar.value = curAmount;
|
||||||
progbar.labels[1].innerHTML = curAmount + "/" + goalAmount + "₺";
|
progbar.labels[1].innerHTML = curAmount + "/" + goalAmount + "₺";
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(err => {
|
||||||
|
throw err
|
||||||
|
});
|
||||||
|
|
||||||
|
//
|
||||||
|
// PUBLIC DATA
|
||||||
|
//
|
||||||
|
|
||||||
|
let url2 = 'https://git.aliberksandikci.com.tr/api/v1/repos/asandikci.com/www/contents/public-data.json';
|
||||||
|
// let url2 = "http://127.0.0.1:PORT/public-data.json";
|
||||||
|
// localtest = 1;
|
||||||
|
fetch(url2)
|
||||||
|
.then(res => res.json())
|
||||||
|
.then(out => {
|
||||||
|
var publicjson;
|
||||||
|
if (localtest) {
|
||||||
|
publicjson = out[0]["public-todo"];
|
||||||
|
} else {
|
||||||
|
var cnt = out.content;
|
||||||
|
console.log("base64: " + cnt);
|
||||||
|
publicjson = JSON.parse(b64DecodeUnicode(cnt))[0]["public-todo"];
|
||||||
|
}
|
||||||
|
|
||||||
|
publicjson.sort(function(a, b) {
|
||||||
|
return Number(Object.keys(a)) > Number(Object.keys(b));
|
||||||
|
});
|
||||||
|
console.log(publicjson);
|
||||||
|
|
||||||
|
var curi = 0;
|
||||||
|
for (let i = 0; i < publicjson.length; i++) {
|
||||||
|
const element = Number(Object.keys(publicjson[i]));
|
||||||
|
if (curAmount < element) {
|
||||||
|
goalAmount = element;
|
||||||
|
curi = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log(goalAmount);
|
||||||
|
document.getElementById("sirada-yapilacaklar").innerHTML = publicjson[i][goalAmount][0];
|
||||||
|
let progbar = document.getElementById("pprogress")
|
||||||
|
progbar.max = goalAmount;
|
||||||
|
progbar.labels[1].innerHTML = curAmount + "/" + goalAmount + "₺";
|
||||||
})
|
})
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
throw err
|
throw err
|
||||||
|
|
148
iflpanel/path.php
Normal file
148
iflpanel/path.php
Normal file
|
@ -0,0 +1,148 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
|
||||||
|
<?php
|
||||||
|
### ERROR HANDLING ###
|
||||||
|
|
||||||
|
function warnError($errno, $errstr, $errfile, $errline)
|
||||||
|
{
|
||||||
|
echo "<br><p style='padding:0px;margin:0px;background-color:white;color:black;'><b style='color:red;'>Error:</b> [$errno] $errstr <br> in file <b style='color:blue'>$errfile</b> line <b style='color:red'>$errline</b></p>";
|
||||||
|
}
|
||||||
|
set_error_handler("warnError");
|
||||||
|
|
||||||
|
if (!$_SERVER['DOCUMENT_ROOT']) {
|
||||||
|
$_SERVER['DOCUMENT_ROOT'] = '/weblink';
|
||||||
|
}
|
||||||
|
# TODO separate file
|
||||||
|
?>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Meta Content -->
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="description" content="İFL/Eğitim odaklı geliştirme yol haritası">
|
||||||
|
<meta name="keywords" content="roadmap,yol haritası">
|
||||||
|
<meta name="author" content="Aliberk Sandıkçı">
|
||||||
|
|
||||||
|
<!-- CSS Files -->
|
||||||
|
<link rel="stylesheet" type="text/css" href="/iflpanel/ssavpn/assets/css/main.css"> <!-- INNER CSS !!! -->
|
||||||
|
<link rel="stylesheet" type="text/css" href="/assets/css/extra_without_scss.css">
|
||||||
|
<style>
|
||||||
|
.inner-xy{
|
||||||
|
list-style-position: inside;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!-- Matomo -->
|
||||||
|
<script>
|
||||||
|
var _paq = window._paq = window._paq || [];
|
||||||
|
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
|
||||||
|
_paq.push(['trackPageView']);
|
||||||
|
_paq.push(['enableLinkTracking']);
|
||||||
|
(function() {
|
||||||
|
var u = "//stats.aliberksandikci.com.tr/";
|
||||||
|
_paq.push(['setTrackerUrl', u + 'matomo.php']);
|
||||||
|
_paq.push(['setSiteId', '3']);
|
||||||
|
var d = document,
|
||||||
|
g = d.createElement('script'),
|
||||||
|
s = d.getElementsByTagName('script')[0];
|
||||||
|
g.async = true;
|
||||||
|
g.src = u + 'matomo.js';
|
||||||
|
s.parentNode.insertBefore(g, s);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
<!-- End Matomo Code -->
|
||||||
|
|
||||||
|
<title>
|
||||||
|
Yol Haritası | Aliberk Sandıkçı
|
||||||
|
</title>
|
||||||
|
<link rel="shortcut icon" href="/assets/images/icons/favicon.ico" type="image/x-icon">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<header>
|
||||||
|
<a href="/" id="hlogo" style="margin:auto;"><img src="/assets/images/icons/favicon.png"></a>
|
||||||
|
</header>
|
||||||
|
<div class="main-scrollable">
|
||||||
|
<article class="plain" style="text-align:center;align-items:center;">
|
||||||
|
<h1 style="margin-bottom:0px;">Yol Haritası</h1>
|
||||||
|
<p>Yapacağım geliştirmelerde bana yardımcı olmak için <a href="../bagis/">bağışta</a> bulunabilirsiniz</p>
|
||||||
|
<sup>Değerlere ulaşıldıkça gerekli özellikler için çalışılmaya başlanacaktır. Bu, özelliklerin getirileceğini garanti etmez!</sup>
|
||||||
|
<div id="roadmap">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
<div class="tmpinfo">2023 🄯 Aliberk Sandıkçı</div>
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
<?php
|
||||||
|
$dir = new DirectoryIterator($_SERVER['DOCUMENT_ROOT'] . "/assets/js");
|
||||||
|
foreach ($dir as $file) {
|
||||||
|
if ((!$file->isDot()) && str_ends_with($file, ".js") && $file != "jquery.js") {
|
||||||
|
echo '<script src="/assets/js/' . $file . '"></script>' . PHP_EOL . ' ';
|
||||||
|
}
|
||||||
|
} ?>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function b64DecodeUnicode(str) {
|
||||||
|
// Going backwards: from bytestream, to percent-encoding, to original string.
|
||||||
|
return decodeURIComponent(atob(str).split('').map(function(c) {
|
||||||
|
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
|
||||||
|
}).join(''));
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// PUBLIC DATA
|
||||||
|
//
|
||||||
|
|
||||||
|
var localtest = 0;
|
||||||
|
var activeUntil;
|
||||||
|
var untilAmount;
|
||||||
|
let url2 = 'https://git.aliberksandikci.com.tr/api/v1/repos/asandikci.com/www/contents/public-data.json';
|
||||||
|
// let url2 = "http://127.0.0.1:PORT/public-data.json";
|
||||||
|
// localtest = 1;
|
||||||
|
fetch(url2)
|
||||||
|
.then(res => res.json())
|
||||||
|
.then(out => {
|
||||||
|
var publicjson;
|
||||||
|
if (localtest) {
|
||||||
|
publicjson = out[0]["public-todo"];
|
||||||
|
activeUntil = out[0]["todo-active-until"];
|
||||||
|
} else {
|
||||||
|
var cnt = out.content;
|
||||||
|
console.log("base64: " + cnt);
|
||||||
|
publicjson = JSON.parse(b64DecodeUnicode(cnt))[0]["public-todo"];
|
||||||
|
activeUntil = JSON.parse(b64DecodeUnicode(cnt))[0]["todo-active-until"];
|
||||||
|
}
|
||||||
|
|
||||||
|
publicjson.sort(function(a, b) {
|
||||||
|
return Number(Object.keys(a)) > Number(Object.keys(b));
|
||||||
|
});
|
||||||
|
console.log(publicjson);
|
||||||
|
untilAmount = Number(activeUntil);
|
||||||
|
console.log(untilAmount);
|
||||||
|
|
||||||
|
var curi = 0;
|
||||||
|
for (let i = 0; i < publicjson.length; i++) {
|
||||||
|
const element = Number(Object.keys(publicjson[i]));
|
||||||
|
document.getElementById("roadmap").innerHTML += "<p style='text-align:left; font-size:25px; font-weight: 700px; color:orange;'>"+element+"</p><ul>";
|
||||||
|
|
||||||
|
for (let j = 0; j < publicjson[i][element].length; j++) {
|
||||||
|
const elin = publicjson[i][element][j];
|
||||||
|
document.getElementById("roadmap").innerHTML += "<li class='inner-xy'>" + elin + "</li>";
|
||||||
|
}
|
||||||
|
document.getElementById("roadmap").innerHTML += "</ul>";
|
||||||
|
if (element >= untilAmount) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(err => {
|
||||||
|
throw err
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
|
@ -66,7 +66,7 @@ if (!$_SERVER['DOCUMENT_ROOT']) {
|
||||||
<p>You can learn more about me in <a href="about/">about me</a> page</p>
|
<p>You can learn more about me in <a href="about/">about me</a> page</p>
|
||||||
<p>You can find my all links in the internet with this <a href="link/">link</a></p>
|
<p>You can find my all links in the internet with this <a href="link/">link</a></p>
|
||||||
<p>You can see my current works in <a href="now/">now</a> page</p>
|
<p>You can see my current works in <a href="now/">now</a> page</p>
|
||||||
<p>Also you can support my works/projects or help me cover my server costs in <a href="bagis/">donation</a> page</p>
|
<p>Also you can support my works/projects or help me cover my server costs in <a href="bagis/">donations</a> page</p>
|
||||||
</article>
|
</article>
|
||||||
<sup style="text-align:center; color:grey;">WIP for website UI/content</sup>
|
<sup style="text-align:center; color:grey;">WIP for website UI/content</sup>
|
||||||
<footer>
|
<footer>
|
||||||
|
|
|
@ -4,8 +4,8 @@
|
||||||
"public-todo": [
|
"public-todo": [
|
||||||
{
|
{
|
||||||
"100": [
|
"100": [
|
||||||
"Tahta Arkaplanı - Yeni Tuş Düzeni",
|
"Tahta Arkaplanı - Ders Programı Menüsü",
|
||||||
"Tahta Arkaplanı - Ders Programı Menüsü"
|
"Tahta Arkaplanı - Yeni Tuş Düzeni"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -98,10 +98,14 @@
|
||||||
"İFL HUB (Sistem, Tahta/Bilgisayar/Telefon Uygulaması) - Diğer İFL uygulamalarının birleştirilmiş hâli. Üstün forum özellikleri, soru sorma, kaynak paylaşma, soru yazabilme/çözebilme/paylaşabilme, öğretmenlerin öğrencileri değerlendirebilmeleri/test gönderebilmeleri... (EBA + Sınavza + Pakodemy + Soru Çözüm Uygulamaları + Wikipedia + EÖdev) - (IFL TAHTA, IFLSOR, IFL'm ... uyumlu)"
|
"İFL HUB (Sistem, Tahta/Bilgisayar/Telefon Uygulaması) - Diğer İFL uygulamalarının birleştirilmiş hâli. Üstün forum özellikleri, soru sorma, kaynak paylaşma, soru yazabilme/çözebilme/paylaşabilme, öğretmenlerin öğrencileri değerlendirebilmeleri/test gönderebilmeleri... (EBA + Sınavza + Pakodemy + Soru Çözüm Uygulamaları + Wikipedia + EÖdev) - (IFL TAHTA, IFLSOR, IFL'm ... uyumlu)"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
],
|
],
|
||||||
"personal-todo": [ "BURADA YAZILANLAR KİŞİSEL NOTLARDIR, DİKKATE ALMAYINIZ",
|
"personal-todo": [
|
||||||
"VPN Troubleshooting açıklamaları", "Auto todos fetch", "Ödeme için QR Code", "Bağışlar için otomatik API?"
|
"BURADA YAZILANLAR KİŞİSEL NOTLARDIR, DİKKATE ALMAYINIZ",
|
||||||
|
"VPN Troubleshooting açıklamaları",
|
||||||
|
"Auto todos fetch",
|
||||||
|
"Ödeme için QR Code",
|
||||||
|
"Bağışlar için otomatik API?",
|
||||||
|
"Kopyala, Kopyalandı bilgi kutucukları için özelleştirmeler(mobil/mouse)"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
Loading…
Reference in a new issue